創建一個提示框可以在不同的位置

function PromptBoxAutoLayer:getIns()
 if PromptBoxAutoLayer.instance_ == nil then
  PromptBoxAutoLayer.instance_ = PromptBoxAutoLayer.new();
 end
 return PromptBoxAutoLayer.instance_;
end

function PromptBoxAutoLayer:createPromptByPos(parentsNode, pos, time, text, isShowArrow)
 ---parentsNode是Prompt的父節點,第二個參數是Prompt的位置,第三個是顯示的時間,
 if parentsNode ~=  nil and pos ~= nil then
  --local pops = PromptBoxAutoLayer.new();
  self:initLayerByName("PromptBoxAutoLayer");
  self.pos = pos;
     self.time  = time;
     self.showStr = text;
     self.isShowArrow = isShowArrow;
     local parNode = tolua.cast(parentsNode,"CCNode");
     parNode:addChild(self.refCocosObj, 1000 );
 end
end

function PromptBoxAutoLayer:onAddToStage()
 if self.pos ~= nil then
  local Panel = self:getCCSpriteByName("Panel");
  if Panel then
   Panel:setPosition(self.pos);
  end
  
  local Arrow = self:getCCSpriteByName("Arrow");
  if Arrow then
   if self.isShowArrow ~= nil then
    Arrow:setVisible(self.isShowArrow);
   else
    Arrow:setVisible(false);
   end
  end
 end
 local TextLabel = self:getFBLabelByName("TextLabel");
 if self.showStr ~= nil then
  local text = TextsSys:getInstance():getLocalString(self.showStr);
  TextLabel:setString(text);
 end
 self:setPos();
 self:ToDoAnimation();
end


function PromptBoxAutoLayer:close()
 self:removeFromParentAndCleanup(true);
end

function PromptBoxAutoLayer:ToDoAnimation()
 local Panel = self:getCCSpriteByName("Panel");
 if Panel then
  Panel:setScale(0.001);
  Panel:setVisible(true);

        local function updateOut(t,b,c,d)
            local r = TweenBack:easeOut(t,b,c,d);
            Panel:setScale(r);
        end
        local scaleOut = LuaAction1d:create(0.5,0,1,updateOut);

        local function updateBack(t,b,c,d)
            local r = TweenBack:easeIn(t,b,c,d);
            Panel:setScale(r);
        end
        local scaleBack = LuaAction1d:create(0.5,1,0,updateBack);

  Panel:runAction(GenAction:Sequence(
            scaleOut,
            CCDelayTime:create(self.time or 5),
            scaleBack,
            CCCallFunc:create(function (args)
             PromptBoxAutoLayerCon:getIns().BoxOnScrollview = nil;
                self:close();
            end)));
 end
end

function PromptBoxAutoLayer:setPos()
 if self.ccnode then

   local Panel = self:getCCSpriteByName("Panel");
   local Arrow = self:getCCSpriteByName("Arrow");

   local px = self.ccnode:getPositionX();
   local py = self.ccnode:getPositionY();

   local PanelSize = Panel:getContentSize();
   local ArrowSize = Arrow:getContentSize();

   local nodeSize = self.ccnode:getContentSize();


   Panel:setPosition(ccp(px,py + ArrowSize.height + nodeSize.height));
 end
end

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章