Cocos2D-Android-1之源码详解:3.ActionsTest

前端之家收集整理的这篇文章主要介绍了Cocos2D-Android-1之源码详解:3.ActionsTest前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

package org.cocos2d.tests;


import java.io.IOException;

import java.io.InputStream;


import javax.microedition.khronos.opengles.GL10;


import org.cocos2d.actions.base.CCAction;

import org.cocos2d.actions.base.CCFollow;

import org.cocos2d.actions.base.CCRepeatForever;

import org.cocos2d.actions.camera.CCOrbitCamera;

import org.cocos2d.actions.instant.CCCallFunc;

import org.cocos2d.actions.instant.CCCallFuncN;

import org.cocos2d.actions.instant.CCCallFuncND;

import org.cocos2d.actions.instant.CCHide;

import org.cocos2d.actions.instant.CCPlace;

import org.cocos2d.actions.instant.CCShow;

import org.cocos2d.actions.instant.CCToggleVisibility;

import org.cocos2d.actions.interval.CCAnimate;

import org.cocos2d.actions.interval.CCBezierBy;

import org.cocos2d.actions.interval.CCBezierTo;

import org.cocos2d.actions.interval.CCBlink;

import org.cocos2d.actions.interval.CCDelayTime;

import org.cocos2d.actions.interval.CCFadeIn;

import org.cocos2d.actions.interval.CCFadeOut;

import org.cocos2d.actions.interval.CCJumpBy;

import org.cocos2d.actions.interval.CCJumpTo;

import org.cocos2d.actions.interval.CCMoveBy;

import org.cocos2d.actions.interval.CCMoveTo;

import org.cocos2d.actions.interval.CCPropertyAction;

import org.cocos2d.actions.interval.CCRepeat;

import org.cocos2d.actions.interval.CCRotateBy;

import org.cocos2d.actions.interval.CCRotateTo;

import org.cocos2d.actions.interval.CCScaleBy;

import org.cocos2d.actions.interval.CCScaleTo;

import org.cocos2d.actions.interval.CCSequence;

import org.cocos2d.actions.interval.CCSpawn;

import org.cocos2d.actions.interval.CCTintBy;

import org.cocos2d.actions.interval.CCTintTo;

import org.cocos2d.config.ccMacros;

import org.cocos2d.layers.CCLayer;

import org.cocos2d.layers.CCScene;

import org.cocos2d.menus.CCMenu;

import org.cocos2d.menus.CCMenuItemImage;

import org.cocos2d.nodes.CCAnimation;

import org.cocos2d.nodes.CCDirector;

import org.cocos2d.nodes.CCLabel;

import org.cocos2d.nodes.CCNode;

import org.cocos2d.nodes.CCSprite;

import org.cocos2d.opengl.CCDrawingPrimitives;

import org.cocos2d.opengl.CCGLSurfaceView;

import org.cocos2d.opengl.CCTexture2D;

import org.cocos2d.opengl.GLResourceHelper;

import org.cocos2d.opengl.GLResourceHelper.Resource;

import org.cocos2d.types.CCBezierConfig;

import org.cocos2d.types.CGPoint;

import org.cocos2d.types.CGRect;

import org.cocos2d.types.CGSize;

import org.cocos2d.types.ccColor3B;


import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.Bundle;

import android.view.Window;

import android.view.WindowManager;


// ActionsTest,there is a downloadable demo here:

// http://code.google.com/p/cocos2d-android-1/downloads/detail?name=ActionsTest.3gp&can=2&q=#makechanges

//

public class ActionsTest extends Activity {//依然是个activity的类

@H_403_148@ private static final String LOG_TAG = ActionsTest.class.getSimpleName();//得到包名


@H_403_148@ public static final int kTagAnimationDance = 1;//这个设为1


@H_403_148@ private CCGLSurfaceView mGLSurfaceView;//得到一个cocose2d的surfaceview


@H_403_148@ @Override

@H_403_148@ protected void onCreate(Bundle savedInstanceState) {

@H_403_148@ super.onCreate(savedInstanceState);

@H_403_148@ requestWindowFeature(Window.FEATURE_NO_TITLE);//无标头

@H_403_148@ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,//全屏

@H_403_148@ WindowManager.LayoutParams.FLAG_FULLSCREEN);

@H_403_148@ getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,

@H_403_148@ WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);//不会变黑


@H_403_148@ mGLSurfaceView = new CCGLSurfaceView(this);//以自己的上下文建立surface,同时让导演中的上下文变成this

@H_403_148@ CCDirector director = CCDirector.sharedDirector();//得到导演

@H_403_148@ director.attachInView(mGLSurfaceView);//把这个view链接到导演

@H_403_148@ director.setDeviceOrientation(CCDirector.kCCDeviceOrientationLandscapeLeft);//横屏

@H_403_148@ setContentView(mGLSurfaceView);//把这个view展示刀屏幕上

@H_403_148@


@H_403_148@ // show FPS

@H_403_148@ CCDirector.sharedDirector().setDisplayFPS(true);//显示帧频率


@H_403_148@ // frames per second

@H_403_148@ CCDirector.sharedDirector().setAnimationInterval(1.0f / 30);//多少秒动一下

//导演是个全局的变量集合。

@H_403_148@ CCScene scene = CCScene.node();//生成一个新场景,因为他不提供new方法所以这样写

@H_403_148@ scene.addChild(nextAction());//给场景添加一个图层


@H_403_148@ // Make the Scene active

@H_403_148@ CCDirector.sharedDirector().runWithScene(scene);//把场景推到栈顶,并且下一个场景设为当前场景

@H_403_148@ }


@H_403_148@ static int sceneIdx = -1;

@H_403_148@ static Class<?> transitions[] = {//一个类列表,方便用来实现不同的窗口

@H_403_148@ ActionManual.class,

@H_403_148@ ActionMove.class,

@H_403_148@ ActionRotate.class,

@H_403_148@ ActionScale.class,

@H_403_148@ ActionJump.class,

@H_403_148@ ActionBezier.class,

@H_403_148@ ActionBlink.class,

@H_403_148@ ActionFade.class,

@H_403_148@ ActionTint.class,

@H_403_148@ ActionAnimate.class,

@H_403_148@ ActionSequence.class,

@H_403_148@ ActionSequence2.class,

@H_403_148@ ActionSpawn.class,

@H_403_148@ ActionReverse.class,

@H_403_148@ ActionDelayTime.class,

@H_403_148@ ActionRepeat.class,

@H_403_148@ ActionRepeatForever.class,

@H_403_148@ ActionRotateToRepeat.class,

@H_403_148@ ActionRotateJerk.class,

@H_403_148@ ActionCallFunc.class,

@H_403_148@ ActionCallFuncND.class,

@H_403_148@ ActionReverseSequence.class,

@H_403_148@ ActionReverseSequence2.class,

@H_403_148@ ActionOrbit.class,

@H_403_148@ ActionFollow.class,

@H_403_148@ ActionProperty.class,

@H_403_148@ };


@H_403_148@ @Override

@H_403_148@ public void onStart() {//方法的复写,以下同理

@H_403_148@ super.onStart();

@H_403_148@ }


@H_403_148@ @Override

@H_403_148@ public void onPause() {

@H_403_148@ super.onPause();


@H_403_148@ CCDirector.sharedDirector().onPause();

@H_403_148@ }


@H_403_148@ @Override

@H_403_148@ public void onResume() {

@H_403_148@ super.onResume();


@H_403_148@ CCDirector.sharedDirector().onResume();

@H_403_148@ }


@H_403_148@ @Override

@H_403_148@ public void onDestroy() {

@H_403_148@ super.onDestroy();


@H_403_148@ CCDirector.sharedDirector().end();

@H_403_148@ // CCTextureCache.sharedTextureCache().removeAllTextures();

@H_403_148@ }


@H_403_148@ //

@H_403_148@ // Actions here

@H_403_148@ //

@H_403_148@ static CCLayer nextAction() {//用来返回即将要画的图层


@H_403_148@ sceneIdx++;

@H_403_148@ sceneIdx = sceneIdx % transitions.length;


@H_403_148@ return restartAction();

@H_403_148@ }


@H_403_148@ static CCLayer backAction() {

@H_403_148@ sceneIdx--;

@H_403_148@ int total = transitions.length;

@H_403_148@ if (sceneIdx < 0)

@H_403_148@ sceneIdx += total;

@H_403_148@ return restartAction();

@H_403_148@ }


@H_403_148@ static CCLayer restartAction() {

@H_403_148@ try {

@H_403_148@ Class<?> c = transitions[sceneIdx];

@H_403_148@ return (CCLayer) c.newInstance();

@H_403_148@ } catch (Exception e) {

@H_403_148@ return null;

@H_403_148@ }

@H_403_148@ }



@H_403_148@ static class ActionDemo extends CCLayer {

@H_403_148@ CCSprite grossini;

@H_403_148@ CCSprite tamara;

@H_403_148@ CCSprite kathia;

@H_403_148@ public ActionDemo()@H_403_148@ {

@H_403_148@ super();


@H_403_148@ // Example:

@H_403_148@ // You can create a sprite using a Texture2D

@H_403_148@

@H_403_148@ Bitmap bmp = null;

@H_403_148@ InputStream is;//用流打开一个图片,变成

@H_403_148@ try {

@H_403_148@ is = CCDirector.theApp.getAssets().open("grossini.png");

@H_403_148@ bmp = BitmapFactory.decodeStream(is);

@H_403_148@ is.close();

@H_403_148@ } catch (IOException e) {

@H_403_148@ // TODO Auto-generated catch block

@H_403_148@ e.printStackTrace();

@H_403_148@ }

@H_403_148@

@H_403_148@ // Keep copy for reinit texture after Activity pause

@H_403_148@ final Bitmap bmpCopy = bmp.copy(bmp.getConfig(),false);//得到一个不可变的图像

@H_403_148@ bmp.recycle();//原图回收

@H_403_148@

@H_403_148@ CCTexture2D tex = new CCTexture2D();//新建一个纹理

@H_403_148@ tex.setLoader(new GLResourceHelper.GLResourceLoader() {

@H_403_148@ @Override

@H_403_148@ public void load(Resource res) {

@H_403_148@ Bitmap bmpForInit = bmpCopy.copy(bmpCopy.getConfig(),false);//依然是得到一个不能改变的拷贝

@H_403_148@ ((CCTexture2D)res).initWithImage(bmpForInit);//以此来作为res的的纹理

@H_403_148@ }

@H_403_148@ });

@H_403_148@ grossini = CCSprite.sprite(tex);//把纹理变为精灵

@H_403_148@ // or just use://或者这样用

@H_403_148@ // grossini = CCSprite.sprite(bmp);

@H_403_148@ // and better not to use this way at all(this is better for manually generated tex)//最好别这样用

@H_403_148@ // because you have to store bmp copy in memory.

@H_403_148@ // use for assets:

@H_403_148@ // CCTexture2D tex = CCTextureCache.sharedTextureCache().addImage("grossini.png");//他会占用内存

@H_403_148@ // grossini = CCSprite.sprite(tex);

@H_403_148@


@H_403_148@ // Example:

@H_403_148@ // Or you can create an sprite using a filename. PNG,JPEG and BMP files are supported. Probably TIFF too

@H_403_148@ tamara = CCSprite.sprite("grossinis_sister1.png");//生成2个精灵

@H_403_148@ kathia = CCSprite.sprite("grossinis_sister2.png");


@H_403_148@ addChild(grossini,1);

@H_403_148@ addChild(tamara,2);

@H_403_148@ addChild(kathia,3);


@H_403_148@ CGSize s = CCDirector.sharedDirector().winSize();//生成一个大小


@H_403_148@ grossini.setPosition(CGPoint.ccp(s.width/2,s.height/3));

@H_403_148@ tamara.setPosition(CGPoint.ccp(s.width/2,2*s.height/3));

@H_403_148@ kathia.setPosition(CGPoint.ccp(s.width/2,s.height/2));


@H_403_148@ CCLabel label = CCLabel.makeLabel(title(),"DroidSans",24);//生成一个label

@H_403_148@ addChild(label);

@H_403_148@ label.setPosition(CGPoint.ccp(s.width/2,s.height-50));


@H_403_148@ String subtitle = subtitle();

@H_403_148@ if( subtitle != null) {

@H_403_148@ CCLabel l = CCLabel.makeLabel(subtitle,"DroidSerif",16);

@H_403_148@ addChild(l,1);

@H_403_148@ l.setPosition(CGPoint.ccp(s.width/2,s.height-80));

@H_403_148@ }


@H_403_148@ CCMenuItemImage item1 = CCMenuItemImage.item("b1.png","b2.png",this,"backCallback");

@H_403_148@ CCMenuItemImage item2 = CCMenuItemImage.item("r1.png","r2.png","restartCallback");

@H_403_148@ CCMenuItemImage item3 = CCMenuItemImage.item("f1.png","f2.png","nextCallback");


@H_403_148@ CCMenu menu = CCMenu.menu(item1,item2,item3);//和之前的文章一样,生成菜单

@H_403_148@ menu.setPosition(CGPoint.zero());

@H_403_148@ item1.setPosition(CGPoint.ccp( s.width/2 - 100,30));

@H_403_148@ item2.setPosition(CGPoint.ccp( s.width/2,30));

@H_403_148@ item3.setPosition(CGPoint.ccp( s.width/2 + 100,30));

@H_403_148@ addChild(menu,1);

@H_403_148@ }


@H_403_148@ public void restartCallback(Object sender) {//同理与上一篇文章

@H_403_148@ CCScene s = CCScene.node();

@H_403_148@ s.addChild(restartAction());

@H_403_148@ CCDirector.sharedDirector().replaceScene(s);

@H_403_148@ }


@H_403_148@ public void nextCallback(Object sender) {

@H_403_148@ CCScene s = CCScene.node();

@H_403_148@ s.addChild(nextAction());

@H_403_148@ CCDirector.sharedDirector().replaceScene(s);

@H_403_148@ }


@H_403_148@ public void backCallback(Object sender) {

@H_403_148@ CCScene s = CCScene.node();

@H_403_148@ s.addChild(backAction());

@H_403_148@ CCDirector.sharedDirector().replaceScene(s);

@H_403_148@ }


@H_403_148@ public void alignSpritesLeft(int numberOfSprites) {//一个通用的方法用来设定不同的大小

@H_403_148@ CGSize s = CCDirector.sharedDirector().winSize();


@H_403_148@ if( numberOfSprites == 1 ) {

@H_403_148@ tamara.setVisible(false);

@H_403_148@ kathia.setVisible(false);

@H_403_148@ grossini.setPosition(CGPoint.ccp(60,s.height/2));

@H_403_148@ } else if( numberOfSprites == 2 ) {@H_403_148@

@H_403_148@ kathia.setPosition(CGPoint.ccp(60,s.height/3));

@H_403_148@ tamara.setPosition(CGPoint.ccp(60,2*s.height/3));

@H_403_148@ grossini.setVisible(false);

@H_403_148@ } else if( numberOfSprites == 3 ) {

@H_403_148@ grossini.setPosition(CGPoint.ccp(60,s.height/2));

@H_403_148@ tamara.setPosition(CGPoint.ccp(60,2*s.height/3));

@H_403_148@ kathia.setPosition(CGPoint.ccp(60,s.height/3));

@H_403_148@ } else {

@H_403_148@ ccMacros.CCLOG(LOG_TAG,"ActionsTests: Invalid number of Sprites");

@H_403_148@ }@H_403_148@

@H_403_148@ }


@H_403_148@ public void centerSprites(int numberOfSprites) {//同理

@H_403_148@ CGSize s = CCDirector.sharedDirector().winSize();


@H_403_148@ if( numberOfSprites == 1 ) {

@H_403_148@ tamara.setVisible(false);

@H_403_148@ kathia.setVisible(false);

@H_403_148@ grossini.setPosition(CGPoint.ccp(s.width/2,s.height/2));

@H_403_148@ } else if( numberOfSprites == 2 ) {@H_403_148@

@H_403_148@ kathia.setPosition(CGPoint.ccp(s.width/3,s.height/2));

@H_403_148@ tamara.setPosition(CGPoint.ccp(2*s.width/3,s.height/2));

@H_403_148@ grossini.setVisible(false);

@H_403_148@ } else if( numberOfSprites == 3 ) {

@H_403_148@ grossini.setPosition(CGPoint.ccp(s.width/2,s.height/2));

@H_403_148@ kathia.setPosition(CGPoint.ccp(s.width/3,s.height/2));

@H_403_148@ } else {

@H_403_148@ ccMacros.CCLOG(LOG_TAG,"ActionsTests: Invalid number of Sprites");

@H_403_148@ }

@H_403_148@ }

@H_403_148@

@H_403_148@ public String title() {

@H_403_148@ return "No title";

@H_403_148@ }


@H_403_148@ public String subtitle() {

@H_403_148@ return null;

@H_403_148@ }

@H_403_148@ }



@H_403_148@ static class ActionManual extends ActionDemo {//第一个类的解析,当执行这个模块时,将会运行如下脚本

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ CGSize s = CCDirector.sharedDirector().winSize();


@H_403_148@ tamara.setScaleX(2.5f);//设置x的比例

@H_403_148@ tamara.setScaleY(-1.0f);//设置y的比例

@H_403_148@ tamara.setPosition(CGPoint.ccp(100,70));

@H_403_148@ tamara.setOpacity(128);//设置明暗度


@H_403_148@ grossini.setRotation(120);//设置旋转角度

@H_403_148@ grossini.setPosition(CGPoint.ccp(s.width/2,s.height/2));

@H_403_148@ grossini.setColor(ccColor3B.ccc3( 255,0));



@H_403_148@ kathia.setPosition(CGPoint.ccp(s.width-100,s.height/2));

@H_403_148@ kathia.setColor(ccColor3B.ccBLUE);

@H_403_148@ }


@H_403_148@ public String title() {

@H_403_148@ return "Manual Transformation";

@H_403_148@ }

@H_403_148@ }



@H_403_148@ static class ActionMove extends ActionDemo {//移动

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ centerSprites(3);


@H_403_148@ CGSize s = CCDirector.sharedDirector().winSize();



@H_403_148@ CCMoveTo actionTo = CCMoveTo.action(2,CGPoint.ccp(s.width-40,s.height-40));//设置移动动作,2秒


@H_403_148@ CCMoveBy actionBy = CCMoveBy.action(2,CGPoint.ccp(80,80));//设置相对移动动作

@H_403_148@ CCMoveBy actionByBack = actionBy.reverse();//反向动作自动生成


@H_403_148@ tamara.runAction(actionTo);//运行

@H_403_148@ grossini.runAction(CCSequence.actions(actionBy,actionByBack));//组合连续动作,不同步

@H_403_148@ kathia.runAction(CCMoveTo.action(1,CGPoint.ccp(40,40)));

@H_403_148@ }


@H_403_148@ public String title() {

@H_403_148@ return "MoveTo / MoveBy";

@H_403_148@ }

@H_403_148@ }


@H_403_148@ static class ActionRotate extends ActionDemo {//旋转

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ centerSprites(3);//3号位置,之前的一个设定位置的方法


@H_403_148@ CCRotateTo actionTo = CCRotateTo.action(2,45);//旋转2秒内转到45

@H_403_148@ CCRotateTo actionTo2 = CCRotateTo.action(2,-45);

@H_403_148@ CCRotateTo actionTo0 = CCRotateTo.action(2,0);

@H_403_148@ tamara.runAction(CCSequence.actions(actionTo,actionTo0));


@H_403_148@ CCRotateBy actionBy = CCRotateBy.action(2,360);//顺时针相对转动360

@H_403_148@ CCRotateBy actionByBack = actionBy.reverse();

@H_403_148@ grossini.runAction(CCSequence.actions(actionBy,actionByBack));


@H_403_148@ kathia.runAction(CCSequence.actions(actionTo2,actionTo0.copy()));

@H_403_148@ }


@H_403_148@ public String title() {

@H_403_148@ return "RotateTo / RotateBy";

@H_403_148@ }


@H_403_148@ }


@H_403_148@ static class ActionScale extends ActionDemo {//大小变化

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ centerSprites(3);


@H_403_148@ CCScaleTo actionTo = CCScaleTo.action(2,0.5f);//2秒钟变小0.5比例

@H_403_148@ CCScaleBy actionBy = CCScaleBy.action(2,2);//2秒变大2倍

@H_403_148@ CCScaleBy actionBy2 = CCScaleBy.action(2,0.25f,4.5f);//2秒,宽变小0.25,长变大4.5

@H_403_148@ CCScaleBy actionByBack = actionBy.reverse();


@H_403_148@ tamara.runAction(actionTo);

@H_403_148@ grossini.runAction(CCSequence.actions(actionBy,actionByBack));


@H_403_148@ kathia.runAction(CCSequence.actions(actionBy2,actionBy2.reverse()));

@H_403_148@ }


@H_403_148@ public String title() {

@H_403_148@ return "ScaleTo / ScaleBy";

@H_403_148@ }


@H_403_148@ }


@H_403_148@ static class ActionJump extends ActionDemo {//跳跃

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ CCJumpTo actionTo = CCJumpTo.action(2,CGPoint.ccp(300,300),50,4);//时间,跳到哪一点,高度,次数

@H_403_148@ CCJumpBy actionBy = CCJumpBy.action(2,0),4);

@H_403_148@ CCJumpBy actionUp = CCJumpBy.action(2,CGPoint.ccp(0,8,4);

@H_403_148@ CCJumpBy actionByBack = actionBy.reverse();


@H_403_148@ tamara.runAction(actionTo);

@H_403_148@ grossini.runAction(CCSequence.actions(actionBy,actionByBack));

@H_403_148@ kathia.runAction(CCRepeatForever.action(actionUp));

@H_403_148@ }


@H_403_148@ public String title() {

@H_403_148@ return "JumpTo / JumpBy";

@H_403_148@ }

@H_403_148@ }


@H_403_148@ static class ActionBezier extends ActionDemo {//曲线移动,以下省略

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ CGSize s = CCDirector.sharedDirector().winSize();


@H_403_148@ //

@H_403_148@ // startPosition can be any coordinate,but since the movement

@H_403_148@ // is relative to the Bezier curve,make it (0,0)

@H_403_148@ //


@H_403_148@ // sprite 1

@H_403_148@ CCBezierConfig bezier = new CCBezierConfig();

@H_403_148@ bezier.controlPoint_1 = CGPoint.ccp(0,s.height/2);

@H_403_148@ bezier.controlPoint_2 = CGPoint.ccp(300,-s.height/2);

@H_403_148@ bezier.endPosition = CGPoint.ccp(300,100);


@H_403_148@ CCBezierBy bezierForward = CCBezierBy.action(3,bezier);

@H_403_148@ CCBezierBy bezierBack = bezierForward.reverse();@H_403_148@

@H_403_148@ CCSequence seq = CCSequence.actions(bezierForward,bezierBack);

@H_403_148@ CCRepeatForever rep = CCRepeatForever.action(seq);


@H_403_148@ // sprite 2

@H_403_148@ tamara.setPosition(CGPoint.ccp(80,160));

@H_403_148@ CCBezierConfig bezier2 = new CCBezierConfig();

@H_403_148@ bezier2.controlPoint_1 = CGPoint.ccp(100,s.height/2);

@H_403_148@ bezier2.controlPoint_2 = CGPoint.ccp(200,-s.height/2);

@H_403_148@ bezier2.endPosition = CGPoint.ccp(240,160);


@H_403_148@ CCBezierTo bezierTo1 = CCBezierTo.action(2,bezier2);@H_403_148@


@H_403_148@ // sprite 3

@H_403_148@ kathia.setPosition(CGPoint.ccp(400,160));

@H_403_148@ CCBezierTo bezierTo2 = CCBezierTo.action(2,bezier2);


@H_403_148@ grossini.runAction(rep);

@H_403_148@ tamara.runAction(bezierTo1);

@H_403_148@ kathia.runAction(bezierTo2);

@H_403_148@ }

@H_403_148@

@H_403_148@ public String title() {

@H_403_148@ return "BezierBy / BezierTo";

@H_403_148@ }

@H_403_148@ }



@H_403_148@ static class ActionBlink extends ActionDemo {//闪烁

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ centerSprites(2);


@H_403_148@ CCBlink action1 = CCBlink.action(2,10);

@H_403_148@ CCBlink action2 = CCBlink.action(2,5);


@H_403_148@ tamara.runAction(action1);

@H_403_148@ kathia.runAction(action2);

@H_403_148@ }

@H_403_148@

@H_403_148@ public String title() {

@H_403_148@ return "Blink";

@H_403_148@ }

@H_403_148@ }


@H_403_148@ static class ActionFade extends ActionDemo {//显影

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ centerSprites(2);


@H_403_148@ tamara.setOpacity(0);

@H_403_148@ CCFadeIn action1 = CCFadeIn.action(1.0f);

@H_403_148@ CCFadeOut action1Back = action1.reverse();


@H_403_148@ CCFadeOut action2 = CCFadeOut.action(1.0f);

@H_403_148@ CCFadeIn action2Back = action2.reverse();


@H_403_148@ tamara.runAction(CCSequence.actions(action1,action1Back));

@H_403_148@ kathia.runAction(CCSequence.actions(action2,action2Back));

@H_403_148@ }

@H_403_148@

@H_403_148@ public String title() {

@H_403_148@ return "FadeIn / FadeOut";

@H_403_148@ }

@H_403_148@ }


@H_403_148@ static class ActionTint extends ActionDemo {//颜色渐变

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ centerSprites(2);


@H_403_148@ CCTintTo action1 = CCTintTo.action(2,ccColor3B.ccc3(255,255));

@H_403_148@ CCTintBy action2 = CCTintBy.action(2,ccColor3B.ccc3(-127,-255,-127));

@H_403_148@ CCTintBy action2Back = action2.reverse();


@H_403_148@ tamara.runAction(action1);

@H_403_148@ kathia.runAction(CCSequence.actions(action2,action2Back));

@H_403_148@ }

@H_403_148@

@H_403_148@ public String title() {

@H_403_148@ return "TintTo / TintBy";

@H_403_148@ }

@H_403_148@ }


@H_403_148@ static class ActionAnimate extends ActionDemo {//贞贞动画

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ centerSprites(1);


@H_403_148@ CCAnimation animation = CCAnimation.animation("dance");

@H_403_148@ for( int i=1;i<15;i++)

@H_403_148@ animation.addFrame(String.format("grossini_dance_%02d.png",i));


@H_403_148@ CCAnimate action = CCAnimate.action(3,animation,false);

@H_403_148@ CCAnimate action_back = action.reverse();


@H_403_148@ grossini.runAction(CCSequence.actions(action,action_back));

@H_403_148@ }

@H_403_148@

@H_403_148@ public String title() {

@H_403_148@ return "Animation";

@H_403_148@ }

@H_403_148@ }



@H_403_148@ static class ActionSequence extends ActionDemo {//连续动作

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ alignSpritesLeft(1);


@H_403_148@ CCSequence action = CCSequence.actions(

@H_403_148@ CCMoveBy.action(2,CGPoint.ccp(240,0)),

@H_403_148@ CCRotateBy.action(2,540)

@H_403_148@ );


@H_403_148@ grossini.runAction(action);

@H_403_148@ }

@H_403_148@

@H_403_148@ public String title() {

@H_403_148@ return "Sequence: Move + Rotate";

@H_403_148@ }

@H_403_148@ }


@H_403_148@ static class ActionSequence2 extends ActionDemo {

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ alignSpritesLeft(1);


@H_403_148@ grossini.setVisible(false);


@H_403_148@ CCSequence action = CCSequence.actions(

@H_403_148@ CCPlace.action(CGPoint.ccp(200,200)),

@H_403_148@ CCShow.action(),

@H_403_148@ CCMoveBy.action(1,CGPoint.ccp(100,

@H_403_148@ CCCallFunc.action(this,"callback1"),

@H_403_148@ CCCallFuncN.action(this,"callback2"),

@H_403_148@ CCCallFuncND.action(this,"callback3",Float.valueOf(1.0f))

@H_403_148@ );


@H_403_148@ grossini.runAction(action);

@H_403_148@ }


@H_403_148@ public void callback1() {

@H_403_148@ CGSize s = CCDirector.sharedDirector().winSize();

@H_403_148@ CCLabel label = CCLabel.makeLabel("callback 1 called",16);

@H_403_148@ label.setPosition(CGPoint.ccp( s.width/4*1,s.height/2));


@H_403_148@ addChild(label);

@H_403_148@ }


@H_403_148@ public void callback2(Object sender) {

@H_403_148@ CGSize s = CCDirector.sharedDirector().winSize();

@H_403_148@ CCLabel label = CCLabel.makeLabel("callback 2 called",16);

@H_403_148@ label.setPosition(CGPoint.ccp( s.width/4*2,s.height/2));


@H_403_148@ addChild(label);

@H_403_148@ }


@H_403_148@ public void callback3(Object sender,Object data) {

@H_403_148@ CGSize s = CCDirector.sharedDirector().winSize();

@H_403_148@ CCLabel label = CCLabel.makeLabel("callback 3 called",16);

@H_403_148@ label.setPosition(CGPoint.ccp( s.width/4*3,s.height/2));


@H_403_148@ addChild(label);

@H_403_148@ }


@H_403_148@ public String title() {

@H_403_148@ return "Sequence of InstantActions";

@H_403_148@ }

@H_403_148@ }


@H_403_148@ static class ActionSpawn extends ActionDemo {//同步动画

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ alignSpritesLeft(1);


@H_403_148@ CCAction action = CCSpawn.actions(

@H_403_148@ CCJumpBy.action(2,4),720));


@H_403_148@ grossini.runAction(action);

@H_403_148@ }

@H_403_148@

@H_403_148@ public String title() {

@H_403_148@ return "Spawn: Jump + Rotate";

@H_403_148@ }

@H_403_148@ }


@H_403_148@ static class ActionRepeatForever extends ActionDemo {//永久重复动画

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ centerSprites(1);


@H_403_148@ CCSequence action = CCSequence.actions(

@H_403_148@ CCDelayTime.action(1),"repeatForever")

@H_403_148@ );


@H_403_148@ grossini.runAction(action);

@H_403_148@ }


@H_403_148@ public void repeatForever(Object sender) {

@H_403_148@ CCRepeatForever repeat = CCRepeatForever.action(CCRotateBy.action(1.0f,360));


@H_403_148@ ((CCNode)sender).runAction(repeat);

@H_403_148@ }


@H_403_148@ public String title() {

@H_403_148@ return "CallFuncN + RepeatForever";

@H_403_148@ }

@H_403_148@ }


@H_403_148@ static class ActionRotateToRepeat extends ActionDemo {

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ centerSprites(2);


@H_403_148@ CCRotateTo act1 = CCRotateTo.action(1,90);

@H_403_148@ CCRotateTo act2 = CCRotateTo.action(1,0);

@H_403_148@ CCSequence seq = CCSequence.actions(act1,act2);

@H_403_148@ CCRepeatForever rep1 = CCRepeatForever.action(seq);

@H_403_148@ CCRepeat rep2 = CCRepeat.action(seq.copy(),10);


@H_403_148@ tamara.runAction(rep1);

@H_403_148@ kathia.runAction(rep2);

@H_403_148@ }


@H_403_148@ public String title() {

@H_403_148@ return "Repeat/RepeatForever + RotateTo";

@H_403_148@ }

@H_403_148@

@H_403_148@ public String subtitle() {

@H_403_148@ return "You should see smooth movements (no jerks). issue #390";

@H_403_148@ }


@H_403_148@ }


@H_403_148@ static class ActionRotateJerk extends ActionDemo {

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ centerSprites(2);


@H_403_148@ CCSequence seq = CCSequence.actions(

@H_403_148@ CCRotateTo.action(0.5f,-20),

@H_403_148@ CCRotateTo.action(0.5f,20)

@H_403_148@ );


@H_403_148@ CCRepeat rep1 = CCRepeat.action(seq,10);

@H_403_148@ CCRepeatForever rep2 = CCRepeatForever.action(seq.copy());


@H_403_148@ tamara.runAction(rep1);

@H_403_148@ kathia.runAction(rep2);

@H_403_148@ }


@H_403_148@ public String title() {

@H_403_148@ return "RepeatForever / Repeat + Rotate";

@H_403_148@ }

@H_403_148@

@H_403_148@ public String subtitle() {

@H_403_148@ return "You should see smooth movements (no jerks). issue #390";

@H_403_148@ }

@H_403_148@ }



@H_403_148@ static class ActionReverse extends ActionDemo {

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ alignSpritesLeft(1);


@H_403_148@ CCJumpBy jump = CCJumpBy.action(2,4);

@H_403_148@ CCSequence action = CCSequence.actions(jump,jump.reverse());


@H_403_148@ grossini.runAction(action);

@H_403_148@ }

@H_403_148@

@H_403_148@ public String title() {

@H_403_148@ return "Reverse an action";

@H_403_148@ }

@H_403_148@ }


@H_403_148@ static class ActionDelayTime extends ActionDemo {

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ alignSpritesLeft(1);


@H_403_148@ CCMoveBy move = CCMoveBy.action(1,CGPoint.ccp(150,0));

@H_403_148@ CCSequence action = CCSequence.actions(move,CCDelayTime.action(2),move);


@H_403_148@ grossini.runAction(action);

@H_403_148@ }

@H_403_148@

@H_403_148@ public String title() {

@H_403_148@ return "DelayTime: m + delay + m";

@H_403_148@ }

@H_403_148@ }


@H_403_148@ static class ActionReverseSequence extends ActionDemo {

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ alignSpritesLeft(1);


@H_403_148@ CCMoveBy move1 = CCMoveBy.action(1,CGPoint.ccp(250,0));

@H_403_148@ CCMoveBy move2 = CCMoveBy.action(1,50));

@H_403_148@ CCSequence seq = CCSequence.actions(move1,move2,move1.reverse());

@H_403_148@ CCSequence action = CCSequence.actions(seq,seq.reverse());


@H_403_148@ grossini.runAction(action);

@H_403_148@ }

@H_403_148@

@H_403_148@ public String title() {

@H_403_148@ return "Reverse a sequence";

@H_403_148@ }

@H_403_148@ }


@H_403_148@ static class ActionReverseSequence2 extends ActionDemo {

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ alignSpritesLeft(2);



@H_403_148@ // Test:

@H_403_148@ // Sequence should work both with IntervalAction and InstantActions


@H_403_148@ CCMoveBy move1 = CCMoveBy.action(1,50));

@H_403_148@ CCToggleVisibility tog1 = CCToggleVisibility.action();

@H_403_148@ CCToggleVisibility tog2 = CCToggleVisibility.action();

@H_403_148@ CCSequence seq = CCSequence.actions(move1,tog1,tog2,move1.reverse());

@H_403_148@ CCRepeat action = CCRepeat.action(

@H_403_148@ CCSequence.actions(seq,seq.reverse()),3);


@H_403_148@ // Test:

@H_403_148@ // Also test that the reverse of Hide is Show,and vice-versa

@H_403_148@ kathia.runAction(action);


@H_403_148@ CCMoveBy move_tamara = CCMoveBy.action(1,0));

@H_403_148@ CCMoveBy move_tamara2 = CCMoveBy.action(1,CGPoint.ccp(50,0));

@H_403_148@ CCHide hide = CCHide.action();

@H_403_148@ CCSequence seq_tamara = CCSequence.actions(move_tamara,hide,move_tamara2);

@H_403_148@ CCSequence seq_back = seq_tamara.reverse();

@H_403_148@ tamara.runAction(CCSequence.actions(seq_tamara,seq_back));

@H_403_148@ }

@H_403_148@

@H_403_148@ public String title() {

@H_403_148@ return "Reverse sequence 2";

@H_403_148@ }

@H_403_148@ }



@H_403_148@ static class ActionRepeat extends ActionDemo {

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ alignSpritesLeft(2);


@H_403_148@ CCMoveBy a1 = CCMoveBy.action(1,0));

@H_403_148@ CCRepeat action1 = CCRepeat.action(

@H_403_148@ CCSequence.actions(CCPlace.action(CGPoint.ccp(60,60)),a1),3);


@H_403_148@ CCRepeatForever action2 = CCRepeatForever.action(

@H_403_148@ CCSequence.actions( a1.copy(),a1.reverse()));


@H_403_148@ kathia.runAction(action1);

@H_403_148@ tamara.runAction(action2);

@H_403_148@ }

@H_403_148@

@H_403_148@ public String title() {

@H_403_148@ return "Repeat / RepeatForever actions";

@H_403_148@ }

@H_403_148@ }


@H_403_148@ static class ActionCallFunc extends ActionDemo {

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ centerSprites(3);


@H_403_148@ CCSequence action = CCSequence.actions(

@H_403_148@ CCMoveBy.action(2,CGPoint.ccp(200,"callback1")

@H_403_148@ );


@H_403_148@ CCSequence action2 = CCSequence.actions(

@H_403_148@ CCScaleBy.action(2,2),

@H_403_148@ CCFadeOut.action(2),"callback2")

@H_403_148@ );


@H_403_148@ CCSequence action3 = CCSequence.actions(

@H_403_148@ CCRotateBy.action(3,360),Float.valueOf(1.0f))

@H_403_148@ );


@H_403_148@ grossini.runAction(action);

@H_403_148@ tamara.runAction(action2);

@H_403_148@ kathia.runAction(action3);

@H_403_148@ }


@H_403_148@ public void callback1() {

@H_403_148@ // ccMacros.CCLOG(LOG_TAG,"callback 1 called");

@H_403_148@ CGSize s = CCDirector.sharedDirector().winSize();

@H_403_148@ CCLabel label = CCLabel.makeLabel("callback 1 called",s.height/2));


@H_403_148@ addChild(label);

@H_403_148@ }

@H_403_148@

@H_403_148@ public void callback2(Object sender) {

@H_403_148@ // ccMacros.CCLOG(LOG_TAG,"callback 2 called from:" + String.valueOf(sender));

@H_403_148@ CGSize s = CCDirector.sharedDirector(). winSize();

@H_403_148@ CCLabel label = CCLabel.makeLabel("callback 2 called",s.height/2));


@H_403_148@ addChild(label);

@H_403_148@ }

@H_403_148@

@H_403_148@ public void callback3(Object sender,Object data) {

@H_403_148@ // NSLog(@"callback 3 called from:%@ with data:%x",sender,(int)data);

@H_403_148@ CGSize s = CCDirector.sharedDirector().winSize();

@H_403_148@ CCLabel label = CCLabel.makeLabel("callback 3 called",s.height/2));

@H_403_148@ addChild(label);

@H_403_148@ }


@H_403_148@ public String title() {

@H_403_148@ return "Callbacks: CallFunc and friends";

@H_403_148@ }

@H_403_148@ }


@H_403_148@ static class ActionCallFuncND extends ActionDemo {

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ centerSprites(1);



@H_403_148@ CCSequence action = CCSequence.actions(

@H_403_148@ CCMoveBy.action(2,"callbackND","a different impleMetation of CCCallFuncND from iphone version")

@H_403_148@ );

@H_403_148@ grossini.runAction(action);

@H_403_148@ }

@H_403_148@

@H_403_148@ public void callbackND(Object sender,Object data) {

@H_403_148@ // the action runner,grossini,is the sender.

@H_403_148@ CCSprite obj = (CCSprite)sender;

@H_403_148@ String msg = (String)data;

@H_403_148@

@H_403_148@ obj.removeFromParentAndCleanup(true);

@H_403_148@ ccMacros.CCLOGINFO("callbackND",msg);

@H_403_148@ }


@H_403_148@ public String title() {

@H_403_148@ return "CallFuncND + auto remove";

@H_403_148@ }


@H_403_148@ public String subtitle() {

@H_403_148@ return "CallFuncND + remove sprite. Grossini dissapears in 2s";

@H_403_148@ }


@H_403_148@ }



@H_403_148@ static class ActionOrbit extends ActionDemo {

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ centerSprites(3);


@H_403_148@ CCOrbitCamera orbit1 = CCOrbitCamera.action(2,1,180,0);

@H_403_148@ CCSequence action1 = CCSequence.actions(

@H_403_148@ orbit1,

@H_403_148@ orbit1.reverse()

@H_403_148@ );


@H_403_148@ CCOrbitCamera orbit2 = CCOrbitCamera.action(2,-45,0);

@H_403_148@ CCSequence action2 = CCSequence.actions(

@H_403_148@ orbit2,

@H_403_148@ orbit2.reverse()

@H_403_148@ );


@H_403_148@ CCOrbitCamera orbit3 = CCOrbitCamera.action(2,90,0);

@H_403_148@ CCSequence action3 = CCSequence.actions(

@H_403_148@ orbit3,

@H_403_148@ orbit3.reverse()

@H_403_148@ );


@H_403_148@ kathia.runAction(CCRepeatForever.action(action1));

@H_403_148@ tamara.runAction(CCRepeatForever.action(action2));

@H_403_148@ grossini.runAction(CCRepeatForever.action(action3));


@H_403_148@ CCMoveBy move = CCMoveBy.action(3,-100));

@H_403_148@ CCMoveBy move_back = move.reverse();

@H_403_148@ CCSequence seq = CCSequence.actions(move,move_back);

@H_403_148@ CCRepeatForever rfe = CCRepeatForever.action(seq);

@H_403_148@ kathia.runAction(rfe);

@H_403_148@ tamara.runAction(rfe.copy());

@H_403_148@ grossini.runAction(rfe.copy());

@H_403_148@ }


@H_403_148@ public String title() {

@H_403_148@ return "OrbitCamera action";

@H_403_148@ }

@H_403_148@ }


@H_403_148@ static class ActionFollow extends ActionDemo {

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ centerSprites(1);


@H_403_148@ CGSize winSize = CCDirector.sharedDirector().winSize();


@H_403_148@ grossini.setPosition(CGPoint.ccp(-200,winSize.height/2));


@H_403_148@ CCMoveBy move = CCMoveBy.action(2,CGPoint.ccp(winSize.width*3,0));

@H_403_148@ CCMoveBy move_back = move.reverse();

@H_403_148@ CCSequence seq = CCSequence.actions(move,move_back);

@H_403_148@ CCRepeatForever rep = CCRepeatForever.action(seq);


@H_403_148@ grossini.runAction(rep);


@H_403_148@ this.runAction(

@H_403_148@ CCFollow.action(grossini,CGRect.make(0,(winSize.width*2)-100,winSize.height))

@H_403_148@ );

@H_403_148@ }


@H_403_148@ public void draw(GL10 gl) {

@H_403_148@ CGSize winSize = CCDirector.sharedDirector().winSize();


@H_403_148@ float x = winSize.width*2 - 100;

@H_403_148@ float y = winSize.height;


@H_403_148@ CGPoint vertices[] = {

@H_403_148@ CGPoint.ccp(5,5),CGPoint.ccp(x-5,

@H_403_148@ CGPoint.ccp(x-5,y-5),CGPoint.ccp(5,y-5)

@H_403_148@ };

@H_403_148@

@H_403_148@ CCDrawingPrimitives.ccDrawPoly(gl,vertices,4,true);

@H_403_148@ }


@H_403_148@ public String title() {

@H_403_148@ return "Follow action";

@H_403_148@ }


@H_403_148@ public String subtitle() {

@H_403_148@ return "The sprite should be centered,even though it is being moved";

@H_403_148@ }


@H_403_148@ }


@H_403_148@ static class ActionProperty extends ActionDemo {

@H_403_148@ public void onEnter() {

@H_403_148@ super.onEnter();


@H_403_148@ centerSprites(3);


@H_403_148@ CCPropertyAction rot = CCPropertyAction.action(2,"setRotation",-270);

@H_403_148@ CCPropertyAction rot_back = rot.reverse();

@H_403_148@ CCSequence rot_seq = CCSequence.actions(rot,rot_back);


@H_403_148@ CCPropertyAction scale = CCPropertyAction.action(2,"setScale",3);

@H_403_148@ CCPropertyAction scale_back = scale.reverse();

@H_403_148@ CCSequence scale_seq = CCSequence.actions(scale,scale_back);


@H_403_148@ CCPropertyAction opacity = CCPropertyAction.action(2,"setOpacity",255,0);

@H_403_148@ CCPropertyAction opacity_back = opacity.reverse();

@H_403_148@ CCSequence opacity_seq = CCSequence.actions(opacity,opacity_back);


@H_403_148@ grossini.runAction(rot_seq);

@H_403_148@ tamara.runAction(scale_seq);

@H_403_148@ kathia.runAction(opacity_seq);

@H_403_148@ }


@H_403_148@ public String title() {

@H_403_148@ return "PropertyAction";

@H_403_148@ }


@H_403_148@ public String subtitle() {

@H_403_148@ return "Simulates Rotation,Scale and Opacity using a generic action";

@H_403_148@ }


@H_403_148@ }


}

猜你在找的Cocos2d-x相关文章