码迷,mamicode.com
首页 > 移动开发 > 详细

quick cocos2d-x 实现划线轨迹,精灵匀速跟随移动的效果

时间:2014-12-03 20:59:51      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   on   

 1 local MainScene = class("MainScene", function()
 2     return display.newScene("MainScene")
 3 end)
 4 local CURRENT_MODULE_NAME = ...
 5 local Queue = import("./Queue", CURRENT_MODULE_NAME)
 6 function MainScene:ctor()
 7 
 8     local draw_node = CCDrawNode:create()
 9     self:addChild(draw_node)
10 
11     local sp = display.newSprite("res/res.png", 0, 0)
12     self:addChild(sp)
13     self.myQueue = Queue.new(100)
14 
15     self.layer = display.newLayer()
16     self.layer:setTouchEnabled(true)
17     self.layer:setTouchMode(cc.TOUCH_MODE_ONE_BY_ONE)
18     self.layer:addNodeEventListener(cc.NODE_TOUCH_EVENT, function(event)
19         if event.name == "began" then
20             sp:setPosition(event.x,event.y)
21             return true
22         elseif event.name == "moved" then
23             draw_node:drawDot(ccp(event.x, event.y), 3, ccc4f(220, 10, 10, 222))
24             local point = ccp(event.x, event.y)
25 
26             self.myQueue:enQueue(point)
27             print("ENQUEUE: "..point.x.." ,  "..point.y)
28         elseif event.name == "ended" then
29         end
30     end)
31     self:addChild(self.layer)
32 
33     CCDirector:sharedDirector():getScheduler():scheduleScriptFunc(function(dt)
34         if self.point == nil and self.myQueue:isEmpty() == false then
35             self.point = self.myQueue:deQueue()
36             print("DEQUEUE"..self.point.x.." ,  "..self.point.y)
37         end    
38 
39         if self.point ~= nil then
40             if math.floor(self.point.x) - math.floor(sp:getPositionX()) < 0 then
41                 self.x= -1
42             elseif math.floor(self.point.x) - math.floor(sp:getPositionX()) > 0  then
43                 self.x= 1
44             else
45                 self.x = 0
46             end
47 
48             if math.floor(self.point.y) - math.floor(sp:getPositionY()) < 0 then
49                 self.y=-1
50             elseif math.floor(self.point.y) - math.floor(sp:getPositionY()) > 0  then
51                 self.y= 1
52             else
53                 self.y= 0
54             end
55 
56             local spX = sp:getPositionX() + self.x
57             local spY = sp:getPositionY() + self.y
58 
59             sp:setPosition(ccp(spX, spY))
60 
61             if math.floor(spX) == math.floor(self.point.x) and math.floor(spY) == math.floor(self.point.y) then
62                 self.point = nil
63             end
64         end
65     end, 0.01, false)
66 end
67 
68 function MainScene:onEnter()
69 end
70 
71 function MainScene:onExit()
72 end
73 
74 return MainScene

代码还有一个队列,直接拿我以前写的一个Queue。地址在:http://www.cnblogs.com/vokie/p/4110003.html

效果就是画出轨迹线路,精灵可以沿着轨迹线路匀速运动起来。代码基于quick 2.2.5

效果图片bubuko.com,布布扣

quick cocos2d-x 实现划线轨迹,精灵匀速跟随移动的效果

标签:style   blog   http   io   ar   color   os   sp   on   

原文地址:http://www.cnblogs.com/vokie/p/4141006.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!