#ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__
#include "cocos2d.h"
class HelloWorld : public cocos2d :: CCLayer { public : // 初始化 virtual bool init ();
// 傳回一個特定的場景 static cocos2d :: CCScene * scene ();
// 創造一個HelloWorld 的函數 CREATE_FUNC ( HelloWorld );
// 定義一個變量 以辨別目前顯示的 下标 int nCurrentFrameIndex ;
// 自定義更新函數 void myUpdate ( float dt ); };
#endif
#include "HelloWorldScene.h" #include "../CocosDenshion/win32/MciPlayer.h" //#include "cocos2d-x-2.2.0/CocosDenshion/win32/MciPlayer.h"
using namespace cocos2d ; using namespace CocosDenshion ;
// 傳回一個特定的場景 CCScene * HelloWorld :: scene () { // 建立一個場景 CCScene * scene = CCScene :: create ();
// 将 HelloWorld 層加到場景 之中 HelloWorld * layer = HelloWorld :: create (); scene -> addChild ( layer ); return scene ; }
// 對HelloWorld的場景進行初始化 bool HelloWorld :: init () { bool bInitSucceed = false ; if (! CCLayer :: init ()) { return bInitSucceed ; }
// 添加4個精靈, 每個精靈用來辨別1針 CCSprite * frame1 = CCSprite :: create ( "CloseNormal.png" ); CCSprite * frame2 = CCSprite :: create ( "CloseSelected.png" ); CCSprite * frame3 = CCSprite :: create ( "HelloWorld.png" );
// 設定一樣的坐标 frame1 -> setPosition ( ccp ( 100 , 180 )); frame2 -> setPosition ( ccp ( 100 , 180 )); frame3 -> setPosition ( ccp ( 100 , 180 ));
// 設定2~3針不可見 frame2 -> setVisible ( false ); frame3 -> setVisible ( false );
// 添加到目前層中, tag 按照順序0~2 addChild ( frame1 , 0 , 0 ); addChild ( frame2 , 0 , 1 ); addChild ( frame3 , 0 , 2 );
// 設定定時器 每 0.5S 調用一次 myUpdate(每0.5S切換一次針) schedule ( schedule_selector ( HelloWorld :: myUpdate ), 0.5 ); return true ; }
// 每 0.5S 更新一次定時器 void HelloWorld :: myUpdate ( float dt ) { static int sCurrentFrameIndex = 0 ;
// 擷取目前的所有精靈 CCArray * array = this -> getChildren (); int nArrayCount = array -> count (); if ( 0 == nArrayCount ) { return ; }
// 隐藏所有的精靈 for ( int i = 0 ; i < nArrayCount ; i ++) { // 根據 Tag 索引每一幀并設定不可見 CCSprite * spT = ( CCSprite *) this -> getChildByTag ( i ); spT -> setVisible ( false ); }
// 讓下一幀顯示出來 CCSprite * sp = ( CCSprite *) this -> getChildByTag ( sCurrentFrameIndex ); sp -> setVisible ( true ); sCurrentFrameIndex ++;
// 設定下标 if ( sCurrentFrameIndex == nArrayCount ) { sCurrentFrameIndex = 0 ; } }