#!/usr/bin/python # -*- mode: python; Encoding: utf-8; coding: utf-8 -*- # Last updated: <2017/08/24 16:36:58 +0900> u""" Tiledで作った.tmxファイルを読み込んで表示してみるテスト. BGを立てスクロール、かつ、sin値で横にもスクロールさせてみる. Windows10 x64 + Python 2.7.13 32bit + cocos2d 0.6.4 """ import cocos from cocos.director import director import math class MyAction(cocos.actions.Action): u"""スプライトに与えるアクション.""" def init(self): u"""初期化処理.""" self.count = 0 self.scrl_y = 0 def step(self, dt): u"""毎フレーム呼ばれる処理. BGをスクロールさせる.""" wdw_w, wdw_h = director.get_window_size() self.count = (self.count + 45.0 * dt) % 360.0 self.scrl_y = (self.scrl_y + 256.0 * dt) % 1024 rad = math.radians(self.count) x = int(384 * math.sin(rad) + 1024) y = int(self.scrl_y + (wdw_h / 2)) # スクロール座標を指定 # 指定座標が画面中央にくるようにスクロールする scroller.set_focus(x, y) class MyLayer(cocos.layer.Layer): u"""キャラを乗せるレイヤー. BGスクロールには追従しない.""" def __init__(self): u"""初期化処理.""" super(MyLayer, self).__init__() wdw_w, wdw_h = director.get_window_size() sprite = cocos.sprite.Sprite("enemy_ball.png") sprite.position = (wdw_w / 2, wdw_h / 2) self.add(sprite) sprite.do(MyAction()) def main(): u"""メイン処理.""" global scroller director.init(width=640, height=480, autoscale=True, resizable=False) director.show_FPS = True # スクロールマネージャを生成 scroller = cocos.layer.ScrollingManager() # .tmxファイルを読み込み map_res = cocos.tiles.load('city_bg2.tmx') # タイルレイヤー情報を取得。レイヤー名でアクセスできる bg_city_layer = map_res['bg_city'] bg_cloud_layer = map_res['bg_cloud'] # パララックス(視差)を指定 # 奥のBGのスクロール量を少なくしてる bg_city_layer.parallax = 0.5 # ScrollingManagerに登録 scroller.add(bg_city_layer) scroller.add(bg_cloud_layer) # スクロール座標を指定 scroller.set_focus(512, 0) # シーン生成。ScrollingManagerを登録 scene = cocos.scene.Scene(scroller) # キャラを乗せるレイヤーを生成してシーンに追加登録 chara_layer = MyLayer() scene.add(chara_layer) director.run(scene) if __name__ == '__main__': main()