#!/usr/bin/python # -*- mode: python; Encoding: utf-8; coding: utf-8 -*- # Last updated: <2017/08/20 17:39:46 +0900> """ cocos2d : actions sample. http://python.cocos2d.org """ # cocos2D を使うときは import cocos を最初のあたりに書く import cocos from cocos.actions import * # pygletも使う import pyglet class MyLayer(cocos.layer.ColorLayer): u"""メインのレイヤー. カラーレイヤー(cocos.layer.ColorLayer)のサブクラス. """ def __init__(self): u"""初期化処理.""" # カラーレイヤーを青色で初期化 super(MyLayer, self).__init__(64, 64, 224, 255) # labeを作成。 # cocos.text.Label は pyglet.text.Label のラッパー。 # CocosNode の利点を持つ。 label = cocos.text.Label( 'cocos.text.Label', font_name='Times New Roman', font_size=24, anchor_x='center', anchor_y='center', position=(400, 200) ) # ラベルをレイヤーに登録。デフォルトのz値は0 self.add(label) # pygletを使って画像を読み込み image = pyglet.image.load('./enemy_ball.png') # 拡大縮小時にボケないようフィルタを指定。 pyglet.gl.glBindTexture(image.texture.target, image.texture.id) pyglet.gl.glTexParameteri(image.texture.target, pyglet.gl.GL_TEXTURE_MIN_FILTER, pyglet.gl.GL_NEAREST) pyglet.gl.glTexParameteri(image.texture.target, pyglet.gl.GL_TEXTURE_MAG_FILTER, pyglet.gl.GL_NEAREST) # spriteを生成 # cocos.sprite.Sprite は pyglet.sprite.Sprite のラッパー sprite = cocos.sprite.Sprite(image.texture, position=(400, 400)) # スプライトのスケール(拡大縮小率)を指定。デフォルトは1 sprite.scale = 6 # スプライトをレイヤーに登録。z値を1に self.add(sprite, z=1) # スケール変化のアクションを用意する。6倍まで1.5秒かけて変化 scale = ScaleBy(6, duration=1.5) # ラベルにアクションを指定。スケール変化(拡大→縮小)を繰り返す label.do(Repeat(scale + Reverse(scale))) # スプライトにアクションを指定。スケール変化(縮小→拡大)を繰り返す sprite.do(Repeat(Reverse(scale) + scale)) if __name__ == "__main__": # directorの初期化は pyglet.window と同じ引数を取る cocos.director.director.init(width=800, height=600) # レイヤーを作成 layer = MyLayer() # 回転アクションをレイヤーに対して指定 layer.do(RotateBy(360, duration=4)) # hello_layer レイヤーを含んだシーンを作成 scene = cocos.scene.Scene(layer) # メインシーンを director に渡して実行 cocos.director.director.run(scene)