最基本的元素
定义一个Layer类,Hellowrld从Layer继承,创建一个label,为了在屏幕上显示,将其加入到Layer中。这里,Layer,Label都是CocosNode的子类,都有其默认的draw方法。只要将其加入add进去,就可以自动显示。默认的坐标原点在左下方,非常简单,如下代码所示:
import cocos
class HelloWorld(cocos.layer.Layer):
def __init__(self):
super(HelloWorld,self).__init__()
label = cocos.text.Label("helloWorld")
self.add(label)
if __name__ == '__main__':
cocos.director.director.init()
layer = HelloWorld()
scene = cocos.scene.Scene(layer)
cocos.director.director.run(scene)
添加Action
cocos2d中做了很多高档的action处理,跟QT中的处理颇为相似,参见cocos.actions中的说明,可以完成各种各样的动作。下面这个例子将字符串label从左下角向中间移动,实现起来非常简单。
import cocos
from cocos.actions import *
class HelloWorld(cocos.layer.Layer):
def __init__(self):
super(HelloWorld,self).__init__()
label = cocos.text.Label("helloWorld")
self.add(label)
move = MoveTo((100, 100), 2) + MoveTo((200, 200), 5)
label.do(action)
if __name__ == '__main__':
cocos.director.director.init()
layer = HelloWorld()
scene = cocos.scene.Scene(layer)
cocos.director.director.run(scene)
添加Event
event的处理也是很方便的,这里注意如果要接受event的话,需要设置is_event_handler为True,添加自己的Event处理方法也很简单,只需要对相应的动作添加on_函数即可。详细内容如下面代码所示:
import cocos,pyglet
class KeyDisplay(cocos.layer.Layer):
is_event_handler = True
def __init__(self):
super(KeyDisplay,self).__init__()
self.text = cocos.text.Label("",x=100,y=280)
self.keys_pressed = []
self.update_text()
self.add(self.text)
def update_text(self):
key_names = [pyglet.window.key.symbol_string(k) for k in self.keys_pressed]
text = 'Keys:'+','.join(key_names)
self.text.element.text = text
def on_key_press(self,key,modifiers):
self.keys_pressed.append(key)
self.update_text()
if __name__ == '__main__':
cocos.director.director.init()
layer = KeyDisplay()
scene = cocos.scene.Scene(layer)
cocos.director.director.run(scene)
<本节完>