Adding CocosDragonJS project

This commit is contained in:
Rohan Kuruvilla 2012-11-22 02:11:47 -06:00 committed by James Chen
parent 36bbd80b68
commit cfb59529a8
143 changed files with 19840 additions and 0 deletions

View File

@ -0,0 +1,85 @@
#include "AppDelegate.h"
#include "cocos2d.h"
#include "SimpleAudioEngine.h"
#include "ScriptingCore.h"
#include "generated/cocos2dx.hpp"
#include "cocos2d_specifics.hpp"
#include "js_bindings_chipmunk_registration.h"
#include "js_bindings_ccbreader.h"
USING_NS_CC;
using namespace CocosDenshion;
AppDelegate::AppDelegate()
{
}
AppDelegate::~AppDelegate()
{
CCScriptEngineManager::sharedManager()->purgeSharedManager();
}
bool AppDelegate::applicationDidFinishLaunching()
{
// initialize director
CCDirector *pDirector = CCDirector::sharedDirector();
pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());
// turn on display FPS
pDirector->setDisplayStats(true);
// set FPS. the default value is 1.0/60 if you don't call this
pDirector->setAnimationInterval(1.0 / 60);
ScriptingCore* sc = ScriptingCore::getInstance();
sc->addRegisterCallback(register_all_cocos2dx);
sc->addRegisterCallback(register_cocos2dx_js_extensions);
sc->addRegisterCallback(register_CCBuilderReader);
sc->addRegisterCallback(jsb_register_chipmunk);
sc->start();
js_log("RUNNING Main");
CCScriptEngineProtocol *pEngine = ScriptingCore::getInstance();
CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine);
ScriptingCore::getInstance()->runScript("main.js");
return true;
}
void handle_signal(int signal) {
static int internal_state = 0;
ScriptingCore* sc = ScriptingCore::getInstance();
// should start everything back
CCDirector* director = CCDirector::sharedDirector();
if (director->getRunningScene()) {
director->popToRootScene();
} else {
CCPoolManager::sharedPoolManager()->finalize();
if (internal_state == 0) {
//sc->dumpRoot(NULL, 0, NULL);
sc->start();
internal_state = 1;
} else {
sc->runScript("hello.js");
internal_state = 0;
}
}
}
// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground()
{
CCDirector::sharedDirector()->stopAnimation();
SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
SimpleAudioEngine::sharedEngine()->pauseAllEffects();
}
// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground()
{
CCDirector::sharedDirector()->startAnimation();
SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
SimpleAudioEngine::sharedEngine()->resumeAllEffects();
}

View File

@ -0,0 +1,45 @@
//
// GCTestAppDelegate.h
// GCTest
//
// Created by Rohan Kuruvilla on 06/08/2012.
// Copyright __MyCompanyName__ 2012. All rights reserved.
//
#ifndef _APP_DELEGATE_H_
#define _APP_DELEGATE_H_
#include "CCApplication.h"
/**
@brief The cocos2d Application.
The reason for implement as private inheritance is to hide some interface call by CCDirector.
*/
class AppDelegate : private cocos2d::CCApplication
{
public:
AppDelegate();
virtual ~AppDelegate();
/**
@brief Implement CCDirector and CCScene init code here.
@return true Initialize success, app continue.
@return false Initialize failed, app terminate.
*/
virtual bool applicationDidFinishLaunching();
/**
@brief The function be called when the application enter background
@param the pointer of the application
*/
virtual void applicationDidEnterBackground();
/**
@brief The function be called when the application enter foreground
@param the pointer of the application
*/
virtual void applicationWillEnterForeground();
};
#endif // _APP_DELEGATE_H_

View File

@ -0,0 +1,51 @@
/* http://www.cocosbuilder.com
* http://www.cocos2d-iphone.org
*
* Copyright (c) 2012 Zynga, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
//
// Controller for the Bomb Object
// When the Dragon (hero) touches this object, the Dragon moves downwards.
//
var Bomb = function()
{
this.radius = 15;
};
Bomb.prototype.onUpdate = function()
{};
Bomb.prototype.handleCollisionWith = function(gameObjectController)
{
if (gameObjectController.controllerName == "Dragon")
{
// Collided with the dragon, remove object and add an exposion instead
this.isScheduledForRemove = true;
cc.AudioEngine.getInstance().playEffect("Explo.caf");
var explosion = cc.Reader.load("Explosion.ccbi");
explosion.setPosition(this.rootNode.getPosition());
this.rootNode.getParent().addChild(explosion);
}
};

View File

@ -0,0 +1,46 @@
/* http://www.cocosbuilder.com
* http://www.cocos2d-iphone.org
*
* Copyright (c) 2012 Zynga, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
//
// Controller for the Coin Object
// When the Dragon (hero) touches this object, the Dragon moves upwards
//
var Coin = function()
{
this.radius = 15;
};
Coin.prototype.onUpdate = function()
{};
Coin.prototype.handleCollisionWith = function(gameObjectController)
{
if (gameObjectController.controllerName == "Dragon")
{
cc.AudioEngine.getInstance().playEffect("Coin.caf");
this.isScheduledForRemove = true;
}
};

View File

@ -0,0 +1,85 @@
/* http://www.cocosbuilder.com
* http://www.cocos2d-iphone.org
*
* Copyright (c) 2012 Zynga, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
//
// controller for the Dragon Object (the Hero)
//
// Constants
var CD_START_SPEED = 8;
var CD_COIN_SPEED = 8;
var CD_START_TARGET = 160;
var CD_TARGET_FILTER_FACTOR = 0.05;
var CD_SLOW_DOWN_FACTOR = 0.995;
var CD_GRAVITY_SPEED = 0.1;
var CD_GAMEOVER_SPEED = -10;
var CD_DELTA_TO_ROTATION_FACTOR = 5;
var Dragon = function()
{
this.xTarget = CD_START_TARGET*gScaleFactor;
this.ySpeed = CD_START_SPEED;
this.radius = 25;
};
Dragon.prototype.onUpdate = function()
{
// Calculate the new position
var oldPosition = cc.pMult(this.rootNode.getPosition(), 1.0/gScaleFactor);
var xNew = (this.xTarget/gScaleFactor) * CD_TARGET_FILTER_FACTOR + oldPosition.x * (1-CD_TARGET_FILTER_FACTOR);
var yNew = oldPosition.y + this.ySpeed;
this.rootNode.setPosition(xNew*gScaleFactor, yNew*gScaleFactor);
// Update the vertical speed
this.ySpeed = (this.ySpeed - CD_GRAVITY_SPEED) * CD_SLOW_DOWN_FACTOR;
// Tilt the dragon
var xDelta = xNew - oldPosition.x;
this.rootNode.setRotation(xDelta * CD_DELTA_TO_ROTATION_FACTOR);
// Check for game over
if (this.ySpeed < CD_GAMEOVER_SPEED)
{
sharedGameScene.handleGameOver();
}
};
Dragon.prototype.handleCollisionWith = function(gameObjectController)
{
if (gameObjectController.controllerName == "Coin")
{
// Took a coin
this.ySpeed = CD_COIN_SPEED;
sharedGameScene.setScore(sharedGameScene.score+1);
}
else if (gameObjectController.controllerName == "Bomb")
{
// Hit a bomb
if (this.ySpeed > 0) this.ySpeed = 0;
this.rootNode.animationManager.runAnimationsForSequenceNamed("Hit");
}
};

View File

@ -0,0 +1,45 @@
/* http://www.cocosbuilder.com
* http://www.cocos2d-iphone.org
*
* Copyright (c) 2012 Zynga, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
//
// Controller for the EndCoin object
// When the Dragon (hero) touches this object, the game is won.
//
var EndCoin = function()
{
this.radius = 15;
};
EndCoin.prototype.onUpdate = function()
{};
EndCoin.prototype.handleCollisionWith = function(gameObjectController)
{
if (gameObjectController.controllerName == "Dragon")
{
cc.AudioEngine.getInstance().playEffect("Coin.caf");
this.isScheduledForRemove = true;
sharedGameScene.handleLevelComplete();
}
};

View File

@ -0,0 +1,49 @@
/* http://www.cocosbuilder.com
* http://www.cocos2d-iphone.org
*
* Copyright (c) 2012 Zynga, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
//
// Controller for the Bomb Object
// This object is run when the Dragon (hero) touches a bomb
//
var Explosion = function()
{
this.radius = 15;
};
Explosion.prototype.onDidLoadFromCCB = function()
{
this.rootNode.animationManager.setCompletedAnimationCallback(this, this.onAnimationComplete);
};
Explosion.prototype.onUpdate = function()
{};
Explosion.prototype.handleCollisionWith = function(gameObjectController)
{};
Explosion.prototype.onAnimationComplete = function(animationManager)
{
this.isScheduledForRemove = true;
};

View File

@ -0,0 +1,71 @@
/* http://www.cocosbuilder.com
* http://www.cocos2d-iphone.org
*
* Copyright (c) 2012 Zynga, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
//
// Controller for the GameScene Object
// This object loads the main Scene
//
var GameScene = function(){};
var sharedGameScene;
var gLevelOffsetX = 0;
GameScene.prototype.onDidLoadFromCCB = function()
{
sharedGameScene = this;
this.score = 0;
var level = cc.Reader.load("Level.ccbi");
// Center the level on Screen
gLevelOffsetX = (gWinSize.width-CD_LEVEL_WIDTH*gScaleFactor)/2;
level.setPosition(cc.p(gLevelOffsetX,0));
this.rootNode.addChild(level);
};
GameScene.prototype.setScore = function(score)
{
this.score = score;
this.scoreLabel.setString(""+score);
};
GameScene.prototype.getScore = function()
{
return this.score;
};
GameScene.prototype.handleGameOver = function()
{
var scene = cc.Reader.loadAsScene("MainMenuScene.ccbi");
cc.Director.getInstance().replaceScene(scene);
};
GameScene.prototype.handleLevelComplete = function()
{
var scene = cc.Reader.loadAsScene("MainMenuScene.ccbi");
cc.Director.getInstance().replaceScene(scene);
};

View File

@ -0,0 +1,166 @@
/* http://www.cocosbuilder.com
* http://www.cocos2d-iphone.org
*
* Copyright (c) 2012 Zynga, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
var CD_LEVEL_WIDTH = 320;
var CD_SCROLL_FILTER_FACTOR = 0.1;
var CD_DRAGON_TARGET_OFFET = 80;
// Accelerometer
var CD_ACCEL_FILTER_FACTOR = 0.25;
/**
* Level is the controller object of the game:
* It receives the following events:
* - onUpdate
* - Input events like touches, mouse and accelerometer
*/
var Level = function(){
this.winSize = cc.Director.getInstance().getWinSize();
// Used for the low-pass filter on the accelerometer
this.prevX = 0;
};
Level.prototype.onDidLoadFromCCB = function()
{
// Forward relevant touch events to controller (this)
this.rootNode.onTouchesBegan = function( touches, event) {
this.controller.onTouchesBegan(touches, event);
return true;
};
this.rootNode.onTouchesMoved = function( touches, event) {
this.controller.onTouchesMoved(touches, event);
return true;
};
this.rootNode.onMouseDragged = function( event) {
this.controller.onMouseDragged(event);
return true;
};
this.rootNode.onAccelerometer = function( event) {
this.controller.onAccelerometer(event);
};
// Schedule callback
this.rootNode.onUpdate = function(dt) {
this.controller.onUpdate();
};
this.rootNode.schedule(this.rootNode.onUpdate);
};
//
// Events
//
Level.prototype.onTouchesBegan = function(touches, event)
{
if (gSettingControlType != CD_CONTROLTYPE_TOUCH) return;
var loc = touches[0].getLocation();
this.dragon.controller.xTarget = loc.x - gLevelOffsetX;
};
Level.prototype.onTouchesMoved = function(touches, event)
{
if (gSettingControlType != CD_CONTROLTYPE_TOUCH) return;
var loc = touches[0].getLocation();
this.dragon.controller.xTarget = loc.x - gLevelOffsetX;
};
Level.prototype.onMouseDragged = function(event)
{
if (gSettingControlType != CD_CONTROLTYPE_TOUCH) return;
var loc = event.getLocation();
this.dragon.controller.xTarget = loc.x;
};
Level.prototype.onAccelerometer = function(accelEvent)
{
if (gSettingControlType != CD_CONTROLTYPE_TILT) return;
// low pass filter for accelerometer. This makes the movement softer
var accelX = accelEvent.x * CD_ACCEL_FILTER_FACTOR + (1 - CD_ACCEL_FILTER_FACTOR) * this.prevX;
this.prevX = accelX;
var newX = this.winSize.width * accelX + this.winSize.width/2;
this.dragon.controller.xTarget = newX;
// cc.log('Accel x: '+ accelEvent.x + ' y:' + accelEvent.y + ' z:' + accelEvent.z + ' time:' + accelEvent.timestamp );
};
// Game main loop
Level.prototype.onUpdate = function(dt)
{
var i=0;
var gameObject = null;
var gameObjectController = null;
// Iterate though all objects in the level layer
var children = this.rootNode.getChildren();
for (i = 0; i < children.length; i++)
{
// Check if the child has a controller (only the updatable objects will have one)
gameObject = children[i];
gameObjectController = gameObject.controller;
if (gameObjectController)
{
// Update all game objects
gameObjectController.onUpdate();
var gameObjectPos = cc.pMult(gameObject.getPosition(), 1.0/gScaleFactor);
var dragonPos = cc.pMult(this.dragon.getPosition(), 1.0/gScaleFactor);
// Check for collisions with dragon
if (gameObject !== this.dragon)
{
if (cc.pDistance(gameObjectPos, dragonPos) < gameObjectController.radius + this.dragon.controller.radius)
{
gameObjectController.handleCollisionWith(this.dragon.controller);
this.dragon.controller.handleCollisionWith(gameObjectController);
}
}
}
}
// Check for objects to remove
for (i = children.length-1; i >=0; i--)
{
gameObject = children[i];
gameObjectController = gameObject.controller;
if (gameObjectController && gameObjectController.isScheduledForRemove)
{
this.rootNode.removeChild(gameObject);
}
}
// Adjust position of the layer so dragon is visible
var yTarget = CD_DRAGON_TARGET_OFFET - this.dragon.getPosition().y;
var oldLayerPosition = this.rootNode.getPosition();
var xNew = oldLayerPosition.x;
var yNew = yTarget * CD_SCROLL_FILTER_FACTOR + oldLayerPosition.y * (1 - CD_SCROLL_FILTER_FACTOR);
this.rootNode.setPosition(xNew, yNew);
};

View File

@ -0,0 +1,104 @@
/* http://www.cocosbuilder.com
* http://www.cocos2d-iphone.org
*
* Copyright (c) 2012 Zynga, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
var CD_CONTROLTYPE_TOUCH = 0;
var CD_CONTROLTYPE_TILT = 1;
// Setup global variables
var gSettingMusicEnabled = true;
var gSettingControlType;
var gWinSize = cc.Director.getInstance().getWinSize();
var gScaleFactor;
if (gWinSize.width <= 320) gScaleFactor = 1;
else gScaleFactor = 2;
// Start playing looped background music
cc.AudioEngine.getInstance().setEffectsVolume(0.2);
cc.AudioEngine.getInstance().playMusic("Music.mp3");
//
// MainMenuScene class
//
var MainMenuScene = function(){};
MainMenuScene.prototype.updateSettingsDisplay = function()
{
// Music on/off
this.sprtMusicOff.setVisible(!gSettingMusicEnabled);
// Controls
if (gSettingControlType == CD_CONTROLTYPE_TOUCH)
{
this.sprtControlTouch.setVisible(true);
this.sprtControlTilt.setVisible(false);
}
else
{
this.sprtControlTouch.setVisible(false);
this.sprtControlTilt.setVisible(true);
}
};
MainMenuScene.prototype.onDidLoadFromCCB = function()
{
this.updateSettingsDisplay();
};
MainMenuScene.prototype.onPressedPlay = function()
{
var scene = cc.Reader.loadAsScene("GameScene.ccbi");
cc.Director.getInstance().replaceScene(scene);
};
MainMenuScene.prototype.onPressedMusic = function()
{
gSettingMusicEnabled = !gSettingMusicEnabled;
if (gSettingMusicEnabled)
{
cc.AudioEngine.getInstance().playMusic("Music.mp3");
}
else
{
cc.AudioEngine.getInstance().stopMusic();
}
this.updateSettingsDisplay();
};
MainMenuScene.prototype.onPressedControl = function()
{
if (gSettingControlType == CD_CONTROLTYPE_TOUCH)
{
gSettingControlType = CD_CONTROLTYPE_TILT;
}
else
{
gSettingControlType = CD_CONTROLTYPE_TOUCH;
}
this.updateSettingsDisplay();
};

View File

@ -0,0 +1 @@
5783809fbb118e460886314c5da4429ea1f6577d

View File

@ -0,0 +1,22 @@
// Autogenerated main.js file
require("jsb_constants.js");
require("Bomb.js");
require("Coin.js");
require("Dragon.js");
require("EndCoin.js");
require("Explosion.js");
require("GameScene.js");
require("Level.js");
require("MainMenuScene.js");
function main()
{
var scene = cc.Reader.loadAsScene("MainMenuScene.ccbi");
var director = cc.Director.getInstance();
var runningScene = director.getRunningScene();
if (runningScene === null) director.runWithScene(scene);
else director.replaceScene(scene);
}
main();

View File

@ -0,0 +1 @@
b0c5e740238e0eb308fa7c7d919b955788ce98db

View File

@ -0,0 +1 @@
b0c5e740238e0eb308fa7c7d919b955788ce98db

View File

@ -0,0 +1 @@
6e1a684f77d5fceff75f93f9e269576d0f88c06f

View File

@ -0,0 +1 @@
373c2b2260c711a02a90ad3b68abd7a1853a0527

View File

@ -0,0 +1 @@
af983ed63f13ab325322da1bbb6917290b6142f2

View File

@ -0,0 +1 @@
74cec9c4c8844fed81ea1f0323eb57df1737a1a3

View File

@ -0,0 +1 @@
969548df813b9d834bdce8848a34d20b69995612

View File

@ -0,0 +1,306 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var TAG_NODE = 5560;
var TAG_GROSSINI = 5561;
var TAG_SEQUENCE = 5562;
var sceneIdx = -1;
var MAX_LAYER = 5;
var nextActionManagerAction = function () {
sceneIdx++;
sceneIdx = sceneIdx % MAX_LAYER;
return createActionManagerLayer(sceneIdx);
};
var backActionManagerAction = function () {
sceneIdx--;
if (sceneIdx < 0)
sceneIdx += MAX_LAYER;
return createActionManagerLayer(sceneIdx);
};
var restartActionManagerAction = function () {
return createActionManagerLayer(sceneIdx);
};
var createActionManagerLayer = function (index) {
switch (index) {
case 0:
return new CrashTest();
case 1:
return new LogicTest();
case 2:
return new PauseTest();
case 3:
return new RemoveTest();
case 4:
return new ResumeTest();
}
return null;
};
//------------------------------------------------------------------
//
// ActionManagerTest
//
//------------------------------------------------------------------
var ActionManagerTest = cc.Layer.extend({
_atlas:null,
_title:"",
ctor:function () {
this._super();
},
title:function () {
return "No title";
},
onEnter:function () {
this._super();
var s = cc.Director.getInstance().getWinSize();
var label = cc.LabelTTF.create(this.title(), "Arial", 32);
this.addChild(label, 1);
label.setPosition(cc.p(s.width / 2, s.height - 50));
var item1 = cc.MenuItemImage.create(s_pathB1, s_pathB2, this, this.backCallback);
var item2 = cc.MenuItemImage.create(s_pathR1, s_pathR2, this, this.restartCallback);
var item3 = cc.MenuItemImage.create(s_pathF1, s_pathF2, this, this.nextCallback);
var menu = cc.Menu.create(item1, item2, item3);
menu.setPosition(cc.p(0,0));
item1.setPosition(cc.p(s.width / 2 - item2.getContentSize().width * 2, item2.getContentSize().height / 2));
item2.setPosition(cc.p(s.width / 2, item2.getContentSize().height / 2));
item3.setPosition(cc.p(s.width / 2 + item2.getContentSize().width * 2, item2.getContentSize().height / 2));
this.addChild(menu, 1);
},
restartCallback:function (sender) {
var s = new ActionManagerTestScene();
s.addChild(restartActionManagerAction());
cc.Director.getInstance().replaceScene(s);
},
nextCallback:function (sender) {
var s = new ActionManagerTestScene();
s.addChild(nextActionManagerAction());
cc.Director.getInstance().replaceScene(s);
},
backCallback:function (sender) {
var s = new ActionManagerTestScene();
s.addChild(backActionManagerAction());
cc.Director.getInstance().replaceScene(s);
}
});
//------------------------------------------------------------------
//
// Test1
//
//------------------------------------------------------------------
var CrashTest = ActionManagerTest.extend({
title:function () {
return "Test 1. Should not crash";
},
onEnter:function () {
this._super();
var child = cc.Sprite.create(s_pathGrossini);
child.setPosition(cc.p(200, 200));
this.addChild(child, 1);
//Sum of all action's duration is 1.5 second.
child.runAction(cc.RotateBy.create(1.5, 90));
child.runAction(cc.Sequence.create(
cc.DelayTime.create(1.4),
cc.FadeOut.create(1.1))
);
//After 1.5 second, self will be removed.
this.runAction(cc.Sequence.create(
cc.DelayTime.create(1.4),
cc.CallFunc.create(this, this.removeThis))
);
},
removeThis:function () {
this._parent.removeChild(this, true);
this.nextCallback(this);
}
});
//------------------------------------------------------------------
//
// Test2
//
//------------------------------------------------------------------
var LogicTest = ActionManagerTest.extend({
title:function () {
return "Logic test";
},
onEnter:function () {
this._super();
var grossini = cc.Sprite.create(s_pathGrossini);
this.addChild(grossini, 0, 2);
grossini.setPosition(cc.p(200, 200));
grossini.runAction(cc.Sequence.create(
cc.MoveBy.create(1, cc.p(150, 0)),
cc.CallFunc.create(this, this.bugMe))
);
},
bugMe:function (node) {
node.stopAllActions(); //After this stop next action not working, if remove this stop everything is working
node.runAction(cc.ScaleTo.create(2, 2));
}
});
//------------------------------------------------------------------
//
// PauseTest
//
//------------------------------------------------------------------
var PauseTest = ActionManagerTest.extend({
title:function () {
return "Pause Test";
},
onEnter:function () {
//
// This test MUST be done in 'onEnter' and not on 'init'
// otherwise the paused action will be resumed at 'onEnter' time
//
this._super();
var s = cc.Director.getInstance().getWinSize();
var l = cc.LabelTTF.create("After 5 seconds grossini should move", "Thonburi", 16);
this.addChild(l);
l.setPosition(cc.p(s.width / 2, 245));
//
// Also, this test MUST be done, after [super onEnter]
//
var grossini = cc.Sprite.create(s_pathGrossini);
this.addChild(grossini, 0, TAG_GROSSINI);
grossini.setPosition(cc.p(200, 200));
var action = cc.MoveBy.create(1, cc.p(150, 0));
cc.Director.getInstance().getActionManager().addAction(action, grossini, true);
this.schedule(this.unpause, 3);
},
unpause:function (dt) {
this.unschedule(this.unpause);
var node = this.getChildByTag(TAG_GROSSINI);
cc.Director.getInstance().getActionManager().resumeTarget(node);
}
});
//------------------------------------------------------------------
//
// RemoveTest
//
//------------------------------------------------------------------
var RemoveTest = ActionManagerTest.extend({
title:function () {
return "Remove Test";
},
onEnter:function () {
this._super();
var s = cc.Director.getInstance().getWinSize();
var l = cc.LabelTTF.create("Should not crash", "Thonburi", 16);
this.addChild(l);
l.setPosition(cc.p(s.width / 2, 245));
var move = cc.MoveBy.create(2, cc.p(200, 0));
var callback = cc.CallFunc.create(this, this.stopAction);
var sequence = cc.Sequence.create(move, callback);
sequence.setTag(TAG_SEQUENCE);
var child = cc.Sprite.create(s_pathGrossini);
child.setPosition(cc.p(200, 200));
this.addChild(child, 1, TAG_GROSSINI);
child.runAction(sequence);
},
stopAction:function () {
var sprite = this.getChildByTag(TAG_GROSSINI);
sprite.stopActionByTag(TAG_SEQUENCE);
}
});
//------------------------------------------------------------------
//
// ResumeTest
//
//------------------------------------------------------------------
var ResumeTest = ActionManagerTest.extend({
title:function () {
return "Resume Test";
},
onEnter:function () {
this._super();
var s = cc.Director.getInstance().getWinSize();
var l = cc.LabelTTF.create("Grossini only rotate/scale in 3 seconds", "Thonburi", 16);
this.addChild(l);
l.setPosition(cc.p(s.width / 2, 245));
var grossini = cc.Sprite.create(s_pathGrossini);
this.addChild(grossini, 0, TAG_GROSSINI);
grossini.setPosition(cc.p(s.width / 2, s.height / 2));
grossini.runAction(cc.ScaleBy.create(2, 2));
cc.Director.getInstance().getActionManager().pauseTarget(grossini);
grossini.runAction(cc.RotateBy.create(2, 360));
this.schedule(this.resumeGrossini, 3.0);
},
resumeGrossini:function (time) {
this.unschedule(this.resumeGrossini);
var grossini = this.getChildByTag(TAG_GROSSINI);
cc.Director.getInstance().getActionManager().resumeTarget(grossini);
}
});
var ActionManagerTestScene = TestScene.extend({
runThisTest:function () {
sceneIdx = -1;
MAX_LAYER = 5;
var layer = nextActionManagerAction();
this.addChild(layer);
cc.Director.getInstance().replaceScene(this);
}
});

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,106 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var Ball = cc.Sprite.extend({
_velocity:cc.p(0,0),
_radius:0,
ctor: function() {
cc.associateWithNative( this, cc.Sprite );
this.init();
},
init: function() {
this._super();
},
radius:function () {
return this._radius;
},
setRadius:function (rad) {
this._radius = rad;
},
move:function (delta) {
this.setPosition(cc.pAdd(this.getPosition(), cc.pMult(this._velocity, delta)));
var winSize = cc.Director.getInstance().getWinSize();
if (this.getPosition().x > winSize.width - this.radius()) {
this.setPosition(cc.p(winSize.width - this.radius(), this.getPosition().y));
this._velocity.x *= -1;
} else if (this.getPosition().x < this.radius()) {
this.setPosition(cc.p(this.radius(), this.getPosition().y));
this._velocity.x *= -1;
}
},
collideWithPaddle:function (paddle) {
var paddleRect = paddle.rect();
paddleRect.origin.x += paddle.getPosition().x;
paddleRect.origin.y += paddle.getPosition().y;
var lowY = cc.Rect.CCRectGetMinY(paddleRect);
var midY = cc.Rect.CCRectGetMidY(paddleRect);
var highY = cc.Rect.CCRectGetMaxY(paddleRect);
var leftX = cc.Rect.CCRectGetMinX(paddleRect);
var rightX = cc.Rect.CCRectGetMaxX(paddleRect);
if ((this.getPosition().x > leftX) && (this.getPosition().x < rightX)) {
var hit = false;
var angleOffset = 0.0;
if ((this.getPositionY() > midY) && (this.getPositionY() <= (highY + this.radius()))) {
this.setPosition(cc.p(this.getPosition().x, highY + this.radius()));
hit = true;
angleOffset = Math.PI / 2;
} else if (this.getPosition().y < midY && this.getPosition().y >= lowY - this.radius()) {
this.setPosition(cc.p(this.getPosition().x, lowY - this.radius()));
hit = true;
angleOffset = -Math.PI / 2;
}
if (hit) {
var hitAngle = cc.pToAngle(cc.pSub(paddle.getPosition(), this.getPosition())) + angleOffset;
var scalarVelocity = cc.pLength(this._velocity) * 1.00000005;
var velocityAngle = -cc.pToAngle(this._velocity) + 0.00000005 * hitAngle;
//this._velocity = -this._velocity.y;
this._velocity = cc.pMult(cc.pForAngle(velocityAngle), scalarVelocity);
}
}
},
setVelocity:function (velocity) {
this._velocity = velocity;
},
getVelocity:function () {
return this._velocity;
}
});
Ball.ballWithTexture = function (texture) {
log(Ball);
var ball = new Ball();
ball.initWithTexture(texture);
if (texture instanceof cc.Texture2D)
ball.setRadius(texture.getContentSize().width / 2);
else if ((texture instanceof HTMLImageElement) || (texture instanceof HTMLCanvasElement))
ball.setRadius(texture.width / 2);
return ball;
};

View File

@ -0,0 +1,200 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var TAG_SPRITE_MANAGER = 1;
var PTM_RATIO = 32;
Box2DTestLayer = cc.Layer.extend({
world:null,
//GLESDebugDraw *m_debugDraw;
ctor:function () {
this.setTouchEnabled(true);
//setAccelerometerEnabled( true );
var b2Vec2 = Box2D.Common.Math.b2Vec2
, b2BodyDef = Box2D.Dynamics.b2BodyDef
, b2Body = Box2D.Dynamics.b2Body
, b2FixtureDef = Box2D.Dynamics.b2FixtureDef
, b2World = Box2D.Dynamics.b2World
, b2PolygonShape = Box2D.Collision.Shapes.b2PolygonShape;
var screenSize = cc.Director.getInstance().getWinSize();
//UXLog(L"Screen width %0.2f screen height %0.2f",screenSize.width,screenSize.height);
// Construct a world object, which will hold and simulate the rigid bodies.
this.world = new b2World(new b2Vec2(0, -10), true);
this.world.SetContinuousPhysics(true);
// Define the ground body.
//var groundBodyDef = new b2BodyDef(); // TODO
//groundBodyDef.position.Set(screenSize.width / 2 / PTM_RATIO, screenSize.height / 2 / PTM_RATIO); // bottom-left corner
// Call the body factory which allocates memory for the ground body
// from a pool and creates the ground box shape (also from a pool).
// The body is also added to the world.
//var groundBody = this.world.CreateBody(groundBodyDef);
var fixDef = new b2FixtureDef;
fixDef.density = 1.0;
fixDef.friction = 0.5;
fixDef.restitution = 0.2;
var bodyDef = new b2BodyDef;
//create ground
bodyDef.type = b2Body.b2_staticBody;
fixDef.shape = new b2PolygonShape;
fixDef.shape.SetAsBox(20, 2);
// upper
bodyDef.position.Set(10, screenSize.height / PTM_RATIO + 1.8);
this.world.CreateBody(bodyDef).CreateFixture(fixDef);
// bottom
bodyDef.position.Set(10, -1.8);
this.world.CreateBody(bodyDef).CreateFixture(fixDef);
fixDef.shape.SetAsBox(2, 14);
// left
bodyDef.position.Set(-1.8, 13);
this.world.CreateBody(bodyDef).CreateFixture(fixDef);
// right
bodyDef.position.Set(26.8, 13);
this.world.CreateBody(bodyDef).CreateFixture(fixDef);
//Set up sprite
var mgr = cc.SpriteBatchNode.create(s_pathBlock, 150);
this.addChild(mgr, 0, TAG_SPRITE_MANAGER);
this.addNewSpriteWithCoords(cc.p(screenSize.width / 2, screenSize.height / 2));
var label = cc.LabelTTF.create("Tap screen", "Marker Felt", 32);
this.addChild(label, 0);
label.setColor(cc.c3b(0, 0, 255));
label.setPosition(cc.p(screenSize.width / 2, screenSize.height - 50));
this.scheduleUpdate();
},
//draw:function(){
//},
addNewSpriteWithCoords:function (p) {
//UXLog(L"Add sprite %0.2f x %02.f",p.x,p.y);
var batch = this.getChildByTag(TAG_SPRITE_MANAGER);
//We have a 64x64 sprite sheet with 4 different 32x32 images. The following code is
//just randomly picking one of the images
var idx = (Math.random() > .5 ? 0 : 1);
var idy = (Math.random() > .5 ? 0 : 1);
var sprite = cc.Sprite.createWithTexture(batch.getTexture(), cc.rect(32 * idx, 32 * idy, 32, 32));
batch.addChild(sprite);
sprite.setPosition(cc.p(p.x, p.y));
// Define the dynamic body.
//Set up a 1m squared box in the physics world
var b2BodyDef = Box2D.Dynamics.b2BodyDef
, b2Body = Box2D.Dynamics.b2Body
, b2FixtureDef = Box2D.Dynamics.b2FixtureDef
, b2PolygonShape = Box2D.Collision.Shapes.b2PolygonShape;
var bodyDef = new b2BodyDef();
bodyDef.type = b2Body.b2_dynamicBody;
bodyDef.position.Set(p.x / PTM_RATIO, p.y / PTM_RATIO);
bodyDef.userData = sprite;
var body = this.world.CreateBody(bodyDef);
// Define another box shape for our dynamic body.
var dynamicBox = new b2PolygonShape();
dynamicBox.SetAsBox(0.5, 0.5);//These are mid points for our 1m box
// Define the dynamic body fixture.
var fixtureDef = new b2FixtureDef();
fixtureDef.shape = dynamicBox;
fixtureDef.density = 1.0;
fixtureDef.friction = 0.3;
body.CreateFixture(fixtureDef);
},
update:function (dt) {
//It is recommended that a fixed time step is used with Box2D for stability
//of the simulation, however, we are using a variable time step here.
//You need to make an informed choice, the following URL is useful
//http://gafferongames.com/game-physics/fix-your-timestep/
var velocityIterations = 8;
var positionIterations = 1;
// Instruct the world to perform a single step of simulation. It is
// generally best to keep the time step and iterations fixed.
this.world.Step(dt, velocityIterations, positionIterations);
//Iterate over the bodies in the physics world
for (var b = this.world.GetBodyList(); b; b = b.GetNext()) {
if (b.GetUserData() != null) {
//Synchronize the AtlasSprites position and rotation with the corresponding body
var myActor = b.GetUserData();
myActor.setPosition(cc.p(b.GetPosition().x * PTM_RATIO, b.GetPosition().y * PTM_RATIO));
myActor.setRotation(-1 * cc.RADIANS_TO_DEGREES(b.GetAngle()));
//console.log(b.GetAngle());
}
}
},
onTouchesEnded:function (touches, event) {
//Add a new body/atlas sprite at the touched location
for (var it = 0; it < touches.length; it++) {
var touch = touches[it];
if (!touch)
break;
var location = touch.getLocation();
//location = cc.Director.getInstance().convertToGL(location);
this.addNewSpriteWithCoords(location);
}
}
//CREATE_NODE(Box2DTestLayer);
});
Box2DTestScene = TestScene.extend({
runThisTest:function () {
var layer = new Box2DTestLayer();
this.addChild(layer);
cc.Director.getInstance().replaceScene(this);
}
});

View File

@ -0,0 +1,250 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var ControlButtonTest_HelloVariableSize = ControlScene.extend({
init:function(){
if (this._super()) {
var screenSize = cc.Director.getInstance().getWinSize();
// Defines an array of title to create buttons dynamically
var stringArray = ["Hello", "Variable", "Size","!"];
var layer = cc.Node.create();
this.addChild(layer, 1);
var total_width = 0, height = 0;
// For each title in the array
for(var i = 0; i< stringArray.length; i++){
var button = this.standardButtonWithTitle(stringArray[i]);
button.setPosition(cc.p(total_width + button.getContentSize().width / 2, button.getContentSize().height / 2));
layer.addChild(button);
// Compute the size of the layer
height = button.getContentSize().height;
total_width += button.getContentSize().width;
}
layer.setAnchorPoint(cc.p(0.5, 0.5));
layer.setContentSize(cc.SizeMake(total_width, height));
layer.setPosition(cc.p(screenSize.width / 2.0, screenSize.height / 2.0));
// Add the black background
var background = cc.Scale9Sprite.create(s_extensions_buttonBackground);
background.setContentSize(cc.SizeMake(total_width + 14, height + 14));
background.setPosition(cc.p(screenSize.width / 2.0, screenSize.height / 2.0));
this.addChild(background);
return true;
}
return false;
},
/** Creates and return a button with a default background and title color. */
standardButtonWithTitle:function(title){
/** Creates and return a button with a default background and title color. */
var backgroundButton = cc.Scale9Sprite.create(s_extensions_button);
var backgroundHighlightedButton = cc.Scale9Sprite.create(s_extensions_buttonHighlighted);
var titleButton = cc.LabelTTF.create(title, "Marker Felt", 30);
titleButton.setColor(cc.c3(159, 168, 176));
var button = cc.ControlButton.create(titleButton, backgroundButton);
button.setBackgroundSpriteForState(backgroundHighlightedButton, cc.CONTROL_STATE_HIGHLIGHTED);
button.setTitleColorForState(cc.white(), cc.CONTROL_STATE_HIGHLIGHTED);
return button;
}
});
ControlButtonTest_HelloVariableSize.create = function(sceneTitle){
var scene = cc.Scene.create();
var controlLayer = new ControlButtonTest_HelloVariableSize();
if(controlLayer && controlLayer.init()){
controlLayer.getSceneTitleLabel().setString(sceneTitle);
scene.addChild(controlLayer);
}
return scene;
};
var ControlButtonTest_Event = ControlScene.extend({
_displayValueLabel:null,
ctor:function(){},
init:function(){
if (this._super()) {
var screenSize = cc.Director.getInstance().getWinSize();
// Add a label in which the button events will be displayed
this.setDisplayValueLabel(cc.LabelTTF.create("No Event", "Marker Felt", 32));
this._displayValueLabel.setAnchorPoint(cc.p(0.5, -1));
this._displayValueLabel.setPosition(cc.p(screenSize.width / 2.0, screenSize.height / 2.0));
this.addChild(this._displayValueLabel, 1);
// Add the button
var backgroundButton = cc.Scale9Sprite.create(s_extensions_button);
var backgroundHighlightedButton = cc.Scale9Sprite.create(s_extensions_buttonHighlighted);
var titleButton = cc.LabelTTF.create("Touch Me!", "Marker Felt", 30);
titleButton.setColor(cc.c3(159, 168, 176));
var controlButton = cc.ControlButton.create(titleButton, backgroundButton);
controlButton.setBackgroundSpriteForState(backgroundHighlightedButton, cc.CONTROL_STATE_HIGHLIGHTED);
controlButton.setTitleColorForState(cc.white(), cc.CONTROL_STATE_HIGHLIGHTED);
controlButton.setAnchorPoint(cc.p(0.5, 1));
controlButton.setPosition(cc.p(screenSize.width / 2.0, screenSize.height / 2.0));
this.addChild(controlButton, 1);
// Add the black background
var background = cc.Scale9Sprite.create(s_extensions_buttonBackground);
background.setContentSize(cc.SizeMake(300, 170));
background.setPosition(cc.p(screenSize.width / 2.0, screenSize.height / 2.0));
this.addChild(background);
// Sets up event handlers
controlButton.addTargetWithActionForControlEvent(this, this.touchDownAction, cc.CONTROL_EVENT_TOUCH_DOWN);
controlButton.addTargetWithActionForControlEvent(this, this.touchDragInsideAction, cc.CONTROL_EVENT_TOUCH_DRAGINSIDE);
controlButton.addTargetWithActionForControlEvent(this, this.touchDragOutsideAction, cc.CONTROL_EVENT_TOUCH_DRAGOUTSIDE);
controlButton.addTargetWithActionForControlEvent(this, this.touchDragEnterAction, cc.CONTROL_EVENT_TOUCH_DRAGENTER);
controlButton.addTargetWithActionForControlEvent(this, this.touchDragExitAction, cc.CONTROL_EVENT_TOUCH_DRAGEXIT);
controlButton.addTargetWithActionForControlEvent(this, this.touchUpInsideAction, cc.CONTROL_EVENT_TOUCH_UPINSIDE);
controlButton.addTargetWithActionForControlEvent(this, this.touchUpOutsideAction, cc.CONTROL_EVENT_TOUCH_UPOUTSIDE);
controlButton.addTargetWithActionForControlEvent(this, this.touchCancelAction, cc.CONTROL_EVENT_TOUCH_CANCEL);
return true;
}
return false;
},
getDisplayValueLabel:function(){return this._displayValueLabel;},
setDisplayValueLabel:function(displayValueLabel) {this._displayValueLabel = displayValueLabel;},
touchDownAction:function(sender, controlEvent){
this._displayValueLabel.setString("Touch Down");
},
touchDragInsideAction:function(sender,controlEvent){
this._displayValueLabel.setString("Drag Inside");
},
touchDragOutsideAction:function(sender, controlEvent){
this._displayValueLabel.setString("Drag Outside");
},
touchDragEnterAction:function(sender,controlEvent){
this._displayValueLabel.setString("Drag Enter");
},
touchDragExitAction:function(sender, controlEvent){
this._displayValueLabel.setString("Drag Exit");
},
touchUpInsideAction:function(sender,controlEvent){
this._displayValueLabel.setString("Touch Up Inside.");
},
touchUpOutsideAction:function(sender, controlEvent){
this._displayValueLabel.setString("Touch Up Outside.");
},
touchCancelAction:function(sender,controlEvent){
this._displayValueLabel.setString("Touch Cancel");
}
});
ControlButtonTest_Event.create = function(sceneTitle){
var scene = cc.Scene.create();
var controlLayer = new ControlButtonTest_Event();
if(controlLayer && controlLayer.init()){
controlLayer.getSceneTitleLabel().setString(sceneTitle);
scene.addChild(controlLayer);
}
return scene;
};
var ControlButtonTest_Styling = ControlScene.extend({
init:function(){
if (this._super()) {
var screenSize = cc.Director.getInstance().getWinSize();
var layer = cc.Node.create();
this.addChild(layer, 1);
var space = 10; // px
var max_w = 0, max_h = 0;
for (var i = 0; i < 3; i++)
{
for (var j = 0; j < 3; j++)
{
// Add the buttons
var button = this.standardButtonWithTitle((0|(Math.random() * 30)) + "");
button.setAdjustBackgroundImage(false); // Tells the button that the background image must not be adjust
// It'll use the prefered size of the background image
button.setPosition(cc.p (button.getContentSize().width / 2 + (button.getContentSize().width + space) * i,
button.getContentSize().height / 2 + (button.getContentSize().height + space) * j));
layer.addChild(button);
max_w = Math.max(button.getContentSize().width * (i + 1) + space * i, max_w);
max_h = Math.max(button.getContentSize().height * (j + 1) + space * j, max_h);
}
}
layer.setAnchorPoint(cc.p(0.5, 0.5));
layer.setContentSize(cc.SizeMake(max_w, max_h));
layer.setPosition(cc.p(screenSize.width / 2.0, screenSize.height / 2.0));
// Add the black background
var backgroundButton = cc.Scale9Sprite.create(s_extensions_buttonBackground);
backgroundButton.setContentSize(cc.SizeMake(max_w + 14, max_h + 14));
backgroundButton.setPosition(cc.p(screenSize.width / 2.0, screenSize.height / 2.0));
this.addChild(backgroundButton);
return true;
}
return false;
},
standardButtonWithTitle:function(title){
/** Creates and return a button with a default background and title color. */
var backgroundButton = cc.Scale9Sprite.create(s_extensions_button);
backgroundButton.setPreferredSize(cc.SizeMake(45, 45)); // Set the prefered size
var backgroundHighlightedButton = cc.Scale9Sprite.create(s_extensions_buttonHighlighted);
backgroundHighlightedButton.setPreferredSize(cc.SizeMake(45, 45)); // Set the prefered size
var titleButton = cc.LabelTTF.create(title, "Marker Felt", 30);
titleButton.setColor(cc.c3(159, 168, 176));
var button = cc.ControlButton.create(titleButton, backgroundButton);
button.setBackgroundSpriteForState(backgroundHighlightedButton, cc.CONTROL_STATE_HIGHLIGHTED);
button.setTitleColorForState(cc.white(), cc.CONTROL_STATE_HIGHLIGHTED);
return button;
}
});
ControlButtonTest_Styling.create = function(sceneTitle){
var scene = cc.Scene.create();
var controlLayer = new ControlButtonTest_Styling();
if(controlLayer && controlLayer.init()){
controlLayer.getSceneTitleLabel().setString(sceneTitle);
scene.addChild(controlLayer);
}
return scene;
};

View File

@ -0,0 +1,107 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var ControlScene = cc.Layer.extend({
_sceneTitleLabel:null,
ctor:function(){},
getSceneTitleLabel:function(){return this._sceneTitleLabel;},
setSceneTitleLabel:function(sceneTitleLabel){this._sceneTitleLabel = sceneTitleLabel;},
init:function(){
if (this._super()) {
// Get the sceensize
var screensize = cc.Director.getInstance().getWinSize();
var pBackItem = cc.MenuItemFont.create("Back", this,this.toExtensionsMainLayer);
pBackItem.setPosition(cc.p(screensize.width - 50, 25));
var pBackMenu = cc.Menu.create(pBackItem);
pBackMenu.setPosition( cc.p(0,0));
this.addChild(pBackMenu, 10);
// Add the generated background
var background = cc.Sprite.create(s_extensions_background);
background.setPosition(cc.p(screensize.width / 2, screensize.height / 2));
var bgRect = background.getTextureRect();
background.setScaleX(screensize.width/bgRect.size.width);
background.setScaleY(screensize.height/bgRect.size.height);
this.addChild(background);
// Add the ribbon
var ribbon = cc.Scale9Sprite.create(s_extensions_ribbon, cc.RectMake(1, 1, 48, 55));
ribbon.setContentSize(cc.SizeMake(screensize.width, 57));
ribbon.setPosition(cc.p(screensize.width / 2.0, screensize.height - ribbon.getContentSize().height / 2.0));
this.addChild(ribbon);
// Add the title
this.setSceneTitleLabel(cc.LabelTTF.create("Title", "Arial", 12));
this._sceneTitleLabel.setPosition(cc.p (screensize.width / 2, screensize.height - this._sceneTitleLabel.getContentSize().height / 2 - 5));
this.addChild(this._sceneTitleLabel, 1);
// Add the menu
var item1 = cc.MenuItemImage.create(s_pathB1, s_pathB2, this, this.previousCallback);
var item2 = cc.MenuItemImage.create(s_pathR1, s_pathR2, this, this.restartCallback);
var item3 = cc.MenuItemImage.create(s_pathF1, s_pathF2, this, this.nextCallback);
var menu = cc.Menu.create(item1, item3, item2);
menu.setPosition(cc.p(0,0));
item1.setPosition(cc.p(screensize.width / 2 - 100, 37));
item2.setPosition(cc.p(screensize.width / 2, 35));
item3.setPosition(cc.p(screensize.width / 2 + 100, 37));
this.addChild(menu ,1);
return true;
}
return false;
},
toExtensionsMainLayer:function(sender){
var pScene = new ExtensionsTestScene();
pScene.runThisTest();
},
previousCallback:function(sender){
cc.Director.getInstance().replaceScene(ControlSceneManager.getInstance().previousControlScene());
},
restartCallback:function(sender){
cc.Director.getInstance().replaceScene(ControlSceneManager.getInstance().currentControlScene());
},
nextCallback:function(sender){
cc.Director.getInstance().replaceScene(ControlSceneManager.getInstance().nextControlScene());
}
});
ControlScene.create = function(title){
var scene = cc.Scene.create();
var controlLayer = new ControlScene();
if(controlLayer && controlLayer.init()){
controlLayer.getSceneTitleLabel().setString(title);
scene.addChild(controlLayer);
}
return scene;
};

View File

@ -0,0 +1,108 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var controTestItemNames = [
/* {
itemTitle:"CCControlSliderTest",
testScene:function () {
//
}
},
{
itemTitle:"ControlColourPickerTest",
testScene:function () {
//
}
},
{
itemTitle:"ControlSwitchTest",
testScene:function () {
//
}
},*/
{
itemTitle:"ControlButtonTest_HelloVariableSize",
testScene:function () {
return ControlButtonTest_HelloVariableSize.create(this.itemTitle);
}
},
{
itemTitle:"ControlButtonTest_Event",
testScene:function () {
return ControlButtonTest_Event.create(this.itemTitle);
}
},
{
itemTitle:"ControlButtonTest_Styling",
testScene:function () {
return ControlButtonTest_Styling.create(this.itemTitle);
}
}
];
var ControlSceneManager = cc.Class.extend({
_currentControlSceneId:0,
ctor:function () {
this._currentControlSceneId = 0;
},
getCurrentControlSceneId:function () {
return this._currentControlSceneId;
},
setCurrentControlSceneId:function (currentControlSceneId) {
this._currentControlSceneId = currentControlSceneId
},
nextControlScene:function () {
this._currentControlSceneId = (this._currentControlSceneId + 1) % controTestItemNames.length;
return this.currentControlScene();
},
previousControlScene:function () {
this._currentControlSceneId = this._currentControlSceneId - 1;
if (this._currentControlSceneId < 0) {
this._currentControlSceneId = controTestItemNames.length - 1;
}
return this.currentControlScene();
},
currentControlScene:function () {
return controTestItemNames[this._currentControlSceneId].testScene();
}
});
ControlSceneManager.sharedInstance = null;
/**
* Returns the singleton of the control scene manager.
*/
ControlSceneManager.getInstance = function () {
if (ControlSceneManager.sharedInstance == null) {
ControlSceneManager.sharedInstance = new ControlSceneManager();
}
return ControlSceneManager.sharedInstance;
};

View File

@ -0,0 +1,82 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var TAG_SPRITE = 1;
var ClickAndMoveTestScene = TestScene.extend({
runThisTest:function () {
var layer = new MainLayer();
this.addChild(layer);
cc.Director.getInstance().replaceScene(this);
}
});
var MainLayer = cc.Layer.extend({
ctor:function () {
this.setTouchEnabled(true);
var sprite = cc.Sprite.create(s_pathGrossini);
var layer = cc.LayerColor.create(cc.c4b(255, 255, 0, 100));
this.addChild(layer, -1);
this.addChild(sprite, 0, TAG_SPRITE);
sprite.setPosition(cc.p(20, 150));
sprite.runAction(cc.JumpTo.create(4, cc.p(300, 48), 100, 4));
var fadeIn = cc.FadeIn.create(1);
var fadeOut = cc.FadeOut.create(1);
var forever = cc.RepeatForever.create(cc.Sequence.create(fadeIn, fadeOut));
layer.runAction(forever);
},
onTouchesEnded:function (touches, event) {
if (touches.length <= 0)
return;
var touch = touches[0];
var location = touch.getLocation();
//var convertedLocation = cc.Director.getInstance().convertToGL(location);
var sprite = this.getChildByTag(TAG_SPRITE);
sprite.stopAllActions();
sprite.runAction(cc.MoveTo.create(1, cc.p(location.x, location.y)));
var o = location.x - sprite.getPositionX();
var a = location.y - sprite.getPositionY();
var at = cc.RADIANS_TO_DEGREES(Math.atan(o / a));
if (a < 0) {
if (o < 0)
at = 180 + Math.abs(at);
else
at = 180 - Math.abs(at);
}
at = at % 360;
sprite.runAction(cc.RotateTo.create(1, at));
}
});

View File

@ -0,0 +1,46 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var CocosBuilderTestScene = TestScene.extend({
runThisTest:function(){
/* Create an autorelease CCNodeLoaderLibrary. */
var ccNodeLoaderLibrary = cc.NodeLoaderLibrary.newDefaultCCNodeLoaderLibrary();
ccNodeLoaderLibrary.registerCCNodeLoader("HelloCocosBuilderLayer", new HelloCocosBuilderLayerLoader());
/* Create an autorelease CCBReader. */
var ccbReader = new cc.CCBReader(ccNodeLoaderLibrary);
/* Read a ccbi file. */
var node = ccbReader.readNodeGraphFromFile("res/ccb/official/pub/", "ccb/HelloCocosBuilder.ccbi", this);
if(node != null) {
this.addChild(node);
}
cc.Director.getInstance().replaceScene(this);
}
});

View File

@ -0,0 +1,330 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var MUSIC_FILE = "res/background";
var EFFECT_FILE = "res/effect2";
var DenshionTests = [
{
title:"playBackgroundMusic",
playFunc:function () {
return new playBackgroundMusic();
}
},
{
title:"stopBackgroundMusic",
playFunc:function () {
return new stopBackgroundMusic();
}
},
{
title:"pauseBackgroundMusic",
playFunc:function () {
return new pauseBackgroundMusic();
}
},
{
title:"resumeBackgroundMusic",
playFunc:function () {
return new resumeBackgroundMusic();
}
},
{
title:"rewindBackgroundMusic",
playFunc:function () {
return new rewindBackgroundMusic();
}
},
{
title:"isBackgroundMusicPlaying",
playFunc:function () {
return new isBackgroundMusicPlaying();
}
},
{
title:"playEffect",
playFunc:function () {
return new playEffect();
}
},
{
title:"playEffectRepeatly",
playFunc:function () {
return new playEffectRepeatly();
}
},
{
title:"stopEffect",
playFunc:function () {
return new stopEffect();
}
},
{
title:"unloadEffect",
playFunc:function () {
return new unloadEffect();
}
},
{
title:"addBackgroundMusicVolume",
playFunc:function () {
return new addBackgroundMusicVolume();
}
},
{
title:"subBackgroundMusicVolume",
playFunc:function () {
return new subBackgroundMusicVolume();
}
},
{
title:"addEffectsVolume",
playFunc:function () {
return new addEffectsVolume();
}
},
{
title:"subEffectsVolume",
playFunc:function () {
return new subEffectsVolume();
}
},
{
title:"pauseEffect",
playFunc:function () {
return new pauseEffect();
}
},
{
title:"resumeEffect",
playFunc:function () {
return new resumeEffect();
}
},
{
title:"pauseAllEffects",
playFunc:function () {
return new pauseAllEffects();
}
},
{
title:"resumeAllEffects",
playFunc:function () {
return new resumeAllEffects();
}
},
{
title:"stopAllEffects",
playFunc:function () {
return new stopAllEffects();
}
}
];
CocosDenshionTest = cc.Layer.extend({
_itmeMenu:null,
_beginPos:cc.p(0,0),
isMouseDown:false,
_testCount:0,
ctor:function () {
// add menu items for tests
this._itmeMenu = cc.Menu.create(null);
var s = cc.Director.getInstance().getWinSize();
for (var i = 0; i < DenshionTests.length; i++) {
var label = cc.LabelTTF.create(DenshionTests[i].title, "Arial", 24);
var menuItem = cc.MenuItemLabel.create(label, this, this.menuCallback);
this._itmeMenu.addChild(menuItem, i + 10000);
menuItem.setPosition(cc.p(s.width / 2, (s.height - (i + 1) * LINE_SPACE)));
}
this._testCount = i;
this._itmeMenu.setContentSize(cc.size(s.width, (this._testCount + 1) * LINE_SPACE));
this._itmeMenu.setPosition(cc.p(0,0));
this.addChild(this._itmeMenu);
this.setTouchEnabled(true);
// set default volume
cc.AudioEngine.getInstance().setEffectsVolume(0.5);
cc.AudioEngine.getInstance().setBackgroundMusicVolume(0.5);
},
menuCallback:function (sender) {
var idx = sender.getZOrder() - 10000;
// create the test scene and run it
var scene = DenshionTests[idx].playFunc();
},
onTouchesMoved:function (touches, event) {
if (this.isMouseDown) {
var touchLocation = touches[0].getLocation();
var nMoveY = touchLocation.y - this._beginPos.y;
var curPos = this._itmeMenu.getPosition();
var nextPos = cc.p(curPos.x, curPos.y + nMoveY);
var winSize = cc.Director.getInstance().getWinSize();
if (nextPos.y < 0.0) {
this._itmeMenu.setPosition(cc.p(0,0));
return;
}
if (nextPos.y > ((this._testCount + 1) * LINE_SPACE - winSize.height)) {
this._itmeMenu.setPosition(cc.p(0, ((this._testCount + 1) * LINE_SPACE - winSize.height)));
return;
}
this._itmeMenu.setPosition(nextPos);
this._beginPos = cc.p(0, touchLocation.y);
}
},
onTouchesBegan:function (touches, event) {
if (!this.isMouseDown) {
this._beginPos = touches[0].getLocation();
}
this.isMouseDown = true;
},
onTouchesEnded:function () {
this.isMouseDown = false;
},
onExit:function () {
this._super();
cc.AudioEngine.getInstance().end();
}
});
CocosDenshionTestScene = TestScene.extend({
runThisTest:function () {
var layer = new CocosDenshionTest();
this.addChild(layer);
cc.Director.getInstance().replaceScene(this);
}
});
var soundId = null;
var playBackgroundMusic = function () {
cc.log("play background music");
cc.AudioEngine.getInstance().playBackgroundMusic(MUSIC_FILE, false);
};
var stopBackgroundMusic = function () {
cc.log("stop background music");
cc.AudioEngine.getInstance().stopBackgroundMusic();
};
var pauseBackgroundMusic = function () {
cc.log("pause background music");
cc.AudioEngine.getInstance().pauseBackgroundMusic();
};
var resumeBackgroundMusic = function () {
cc.log("resume background music");
cc.AudioEngine.getInstance().resumeBackgroundMusic();
};
var rewindBackgroundMusic = function () {
cc.log("rewind background music");
cc.AudioEngine.getInstance().rewindBackgroundMusic();
};
// is background music playing
var isBackgroundMusicPlaying = function () {
if (cc.AudioEngine.getInstance().isBackgroundMusicPlaying()) {
cc.log("background music is playing");
}
else {
cc.log("background music is not playing");
}
};
var playEffect = function () {
cc.log("play effect");
soundId = cc.AudioEngine.getInstance().playEffect(EFFECT_FILE);
};
var playEffectRepeatly = function () {
cc.log("play effect repeatly");
soundId = cc.AudioEngine.getInstance().playEffect(EFFECT_FILE, true);
};
var stopEffect = function () {
cc.log("stop effect");
cc.AudioEngine.getInstance().stopEffect(soundId);
};
var unloadEffect = function () {
cc.log("unload effect");
cc.AudioEngine.getInstance().unloadEffect(EFFECT_FILE);
};
var addBackgroundMusicVolume = function () {
cc.log("add bakcground music volume");
cc.AudioEngine.getInstance().setBackgroundMusicVolume(cc.AudioEngine.getInstance().getBackgroundMusicVolume() + 0.1);
};
var subBackgroundMusicVolume = function () {
cc.log("sub backgroud music volume");
cc.AudioEngine.getInstance().setBackgroundMusicVolume(cc.AudioEngine.getInstance().getBackgroundMusicVolume() - 0.1);
};
var addEffectsVolume = function () {
cc.log("add effects volume");
cc.AudioEngine.getInstance().setEffectsVolume(cc.AudioEngine.getInstance().getEffectsVolume() + 0.1);
};
var subEffectsVolume = function () {
cc.log("sub effects volume");
cc.AudioEngine.getInstance().setEffectsVolume(cc.AudioEngine.getInstance().getEffectsVolume() - 0.1);
};
var pauseEffect = function () {
cc.log("pause effect");
cc.AudioEngine.getInstance().pauseEffect(soundId);
};
var resumeEffect = function () {
cc.log("resume effect");
cc.AudioEngine.getInstance().resumeEffect(soundId);
};
var pauseAllEffects = function () {
cc.log("pause all effects");
cc.AudioEngine.getInstance().pauseAllEffects();
};
var resumeAllEffects = function () {
cc.log("resume all effects");
cc.AudioEngine.getInstance().resumeAllEffects();
};
var stopAllEffects = function () {
cc.log("stop all effects");
cc.AudioEngine.getInstance().stopAllEffects();
};

View File

@ -0,0 +1,658 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var TAG_SPRITE1 = 1;
var TAG_SPRITE2 = 2;
var TAG_SPRITE3 = 3;
var TAG_SLIDER = 4;
var sceneIdx = -1;
var MAX_LAYER = 9;
var nextCocosNodeAction = function () {
sceneIdx++;
sceneIdx = sceneIdx % MAX_LAYER;
return createCocosNodeLayer(sceneIdx);
};
var backCocosNodeAction = function () {
sceneIdx--;
if (sceneIdx < 0)
sceneIdx += MAX_LAYER;
return createCocosNodeLayer(sceneIdx);
};
var restartCocosNodeAction = function () {
return createCocosNodeLayer(sceneIdx);
};
var createCocosNodeLayer = function (index) {
switch (index) {
case 0:
return new CCNodeTest2();
case 1:
return new CCNodeTest4();
case 2:
return new CCNodeTest5();
case 3:
return new CCNodeTest6();
case 4:
return new StressTest1();
case 5:
return new StressTest2();
case 6:
return new NodeToWorld();
case 7:
return new SchedulerTest1();
case 8:
return new ConvertToNode();
}
return null;
};
var TestCocosNodeDemo = cc.Layer.extend({
ctor:function () {
},
title:function () {
return "No title";
},
subtitle:function () {
return "";
},
onEnter:function () {
this._super();
var s = cc.Director.getInstance().getWinSize();
var label = cc.LabelTTF.create(this.title(), "Arial", 32);
this.addChild(label, 1);
label.setPosition(cc.p(s.width / 2, s.height - 50));
var strSubtitle = this.subtitle();
if (!strSubtitle == "") {
var l = cc.LabelTTF.create(strSubtitle, "Thonburi", 16);
this.addChild(l, 1);
l.setPosition(cc.p(s.width / 2, s.height - 80));
}
var item1 = cc.MenuItemImage.create(s_pathB1, s_pathB2, this, this.backCallback);
var item2 = cc.MenuItemImage.create(s_pathR1, s_pathR2, this, this.restartCallback);
var item3 = cc.MenuItemImage.create(s_pathF1, s_pathF2, this, this.nextCallback);
var menu = cc.Menu.create(item1, item2, item3);
menu.setPosition(cc.p(0,0));
item1.setPosition(cc.p(s.width / 2 - 100, 30));
item2.setPosition(cc.p(s.width / 2, 30));
item3.setPosition(cc.p(s.width / 2 + 100, 30));
this.addChild(menu, 1);
},
restartCallback:function (sender) {
var s = new CocosNodeTestScene();
s.addChild(restartCocosNodeAction());
cc.Director.getInstance().replaceScene(s);
},
nextCallback:function (sender) {
var s = new CocosNodeTestScene();
s.addChild(nextCocosNodeAction());
cc.Director.getInstance().replaceScene(s);
},
backCallback:function (sender) {
var s = new CocosNodeTestScene();
s.addChild(backCocosNodeAction());
cc.Director.getInstance().replaceScene(s);
}
});
var CCNodeTest2 = TestCocosNodeDemo.extend({
onEnter:function () {
this._super();
var s = cc.Director.getInstance().getWinSize();
var sp1 = cc.Sprite.create(s_pathSister1);
var sp2 = cc.Sprite.create(s_pathSister2);
var sp3 = cc.Sprite.create(s_pathSister1);
var sp4 = cc.Sprite.create(s_pathSister2);
sp1.setPosition(cc.p(150, s.height / 2));
sp2.setPosition(cc.p(s.width - 150, s.height / 2));
this.addChild(sp1);
this.addChild(sp2);
sp3.setScale(0.25);
sp4.setScale(0.25);
sp1.addChild(sp3);
sp2.addChild(sp4);
var a1 = cc.RotateBy.create(2, 360);
var a2 = cc.ScaleBy.create(2, 2);
var action1 = cc.RepeatForever.create(cc.Sequence.create(a1, a2, a2.reverse()));
var action2 = cc.RepeatForever.create(cc.Sequence.create(
a1.copy(), a2.copy(), a2.reverse()));
sp2.setAnchorPoint(cc.p(0, 0));
sp1.runAction(action1);
sp2.runAction(action2);
},
title:function () {
return "anchorPoint and children";
}
});
var SID_DELAY2 = 1;
var SID_DELAY4 = 2;
var CCNodeTest4 = TestCocosNodeDemo.extend({
ctor:function () {
var sp1 = cc.Sprite.create(s_pathSister1);
var sp2 = cc.Sprite.create(s_pathSister2);
var s = cc.Director.getInstance().getWinSize();
sp1.setPosition(cc.p(150, s.height / 2));
sp2.setPosition(cc.p(s.width - 150, s.height / 2));
this.addChild(sp1, 0, 2);
this.addChild(sp2, 0, 3);
this.schedule(this.delay2, 2.0);
this.schedule(this.delay4, 4.0);
},
delay2:function (dt) {
var node = this.getChildByTag(2);
var action1 = cc.RotateBy.create(1, 360);
node.runAction(action1);
},
delay4:function (dt) {
this.unschedule(this.delay4);
this.removeChildByTag(3, false);
},
title:function () {
return "tags";
}
});
var CCNodeTest5 = TestCocosNodeDemo.extend({
ctor:function () {
var sp1 = cc.Sprite.create(s_pathSister1);
var sp2 = cc.Sprite.create(s_pathSister2);
var s = cc.Director.getInstance().getWinSize();
sp1.setPosition(cc.p(150, s.height / 2));
sp2.setPosition(cc.p(s.width - 150, s.height / 2));
var rot = cc.RotateBy.create(2, 360);
var rot_back = rot.reverse();
var forever = cc.RepeatForever.create(cc.Sequence.create(rot, rot_back));
var forever2 = forever.copy();
forever.setTag(101);
forever2.setTag(102);
this.addChild(sp1, 0, TAG_SPRITE1);
this.addChild(sp2, 0, TAG_SPRITE2);
sp1.runAction(forever);
sp2.runAction(forever2);
this.schedule(this.addAndRemove, 2.0);
},
addAndRemove:function (dt) {
var sp1 = this.getChildByTag(TAG_SPRITE1);
var sp2 = this.getChildByTag(TAG_SPRITE2);
this.removeChild(sp1, false);
this.removeChild(sp2, true);
this.addChild(sp1, 0, TAG_SPRITE1);
this.addChild(sp2, 0, TAG_SPRITE2);
},
title:function () {
return "remove and cleanup";
}
});
var CCNodeTest6 = TestCocosNodeDemo.extend({
ctor:function () {
var sp1 = cc.Sprite.create(s_pathSister1);
var sp11 = cc.Sprite.create(s_pathSister1);
var sp2 = cc.Sprite.create(s_pathSister2);
var sp21 = cc.Sprite.create(s_pathSister2);
var s = cc.Director.getInstance().getWinSize();
sp1.setPosition(cc.p(150, s.height / 2));
sp2.setPosition(cc.p(s.width - 150, s.height / 2));
var rot = cc.RotateBy.create(2, 360);
var rot_back = rot.reverse();
var forever1 = cc.RepeatForever.create(cc.Sequence.create(rot, rot_back));
var forever11 = forever1.copy();
var forever2 = forever1.copy();
var forever21 = forever1.copy();
this.addChild(sp1, 0, TAG_SPRITE1);
sp1.addChild(sp11);
this.addChild(sp2, 0, TAG_SPRITE2);
sp2.addChild(sp21);
sp1.runAction(forever1);
sp11.runAction(forever11);
sp2.runAction(forever2);
sp21.runAction(forever21);
this.schedule(this.addAndRemove, 2.0);
},
addAndRemove:function (dt) {
var sp1 = this.getChildByTag(TAG_SPRITE1);
var sp2 = this.getChildByTag(TAG_SPRITE2);
this.removeChild(sp1, false);
this.removeChild(sp2, true);
this.addChild(sp1, 0, TAG_SPRITE1);
this.addChild(sp2, 0, TAG_SPRITE2);
},
title:function () {
return "remove/cleanup with children";
}
});
var StressTest1 = TestCocosNodeDemo.extend({
ctor:function () {
var s = cc.Director.getInstance().getWinSize();
var sp1 = cc.Sprite.create(s_pathSister1);
this.addChild(sp1, 0, TAG_SPRITE1);
sp1.setPosition(cc.p(s.width / 2, s.height / 2));
this.schedule(this.shouldNotCrash, 1.0);
},
shouldNotCrash:function (dt) {
this.unschedule(this.shouldNotCrash);
var s = cc.Director.getInstance().getWinSize();
// if the node has timers, it crashes
var explosion = cc.ParticleSun.create();
explosion.setTexture(cc.TextureCache.getInstance().addImage(s_fire));
explosion.setPosition(cc.p(s.width / 2, s.height / 2));
this.runAction(cc.Sequence.create(
cc.RotateBy.create(2, 360),
cc.CallFunc.create(this, this.removeMe)));
this.addChild(explosion);
},
removeMe:function (node) {
this._parent.removeChild(node, true);
this.nextCallback(this);
},
title:function () {
return "stress test #1: no crashes";
}
});
var StressTest2 = TestCocosNodeDemo.extend({
ctor:function () {
var s = cc.Director.getInstance().getWinSize();
var sublayer = cc.Layer.create();
var sp1 = cc.Sprite.create(s_pathSister1);
sp1.setPosition(cc.p(80, s.height / 2));
var move = cc.MoveBy.create(3, cc.p(350, 0));
var move_ease_inout3 = cc.EaseInOut.create(move.copy(), 2.0);
var move_ease_inout_back3 = move_ease_inout3.reverse();
var seq3 = cc.Sequence.create(move_ease_inout3, move_ease_inout_back3);
sp1.runAction(cc.RepeatForever.create(seq3));
sublayer.addChild(sp1, 1);
var fire = cc.ParticleFire.create();
fire.setTexture(cc.TextureCache.getInstance().addImage(s_fire));
fire.setPosition(cc.p(80, s.height / 2 - 50));
var copy_seq3 = seq3.copy();
fire.runAction(cc.RepeatForever.create(copy_seq3));
sublayer.addChild(fire, 2);
this.schedule(this.shouldNotLeak, 6.0);
this.addChild(sublayer, 0, TAG_SPRITE1);
},
shouldNotLeak:function (dt) {
this.unschedule(this.shouldNotLeak);
var sublayer = this.getChildByTag(TAG_SPRITE1);
sublayer.removeAllChildrenWithCleanup(true);
},
title:function () {
return "stress test #2: no leaks";
}
});
var SchedulerTest1 = TestCocosNodeDemo.extend({
ctor:function () {
var layer = cc.Layer.create();
//UXLog("retain count after init is %d", layer.retainCount()); // 1
this.addChild(layer, 0);
//UXLog("retain count after addChild is %d", layer.retainCount()); // 2
layer.schedule(this.doSomething);
//UXLog("retain count after schedule is %d", layer.retainCount()); // 3 : (object-c viersion), but win32 version is still 2, because CCTimer class don't save target.
layer.unschedule(this.doSomething);
//UXLog("retain count after unschedule is %d", layer.retainCount()); // STILL 3! (win32 is '2')
},
doSomething:function (dt) {
},
title:function () {
return "cocosnode scheduler test #1";
}
});
var NodeToWorld = TestCocosNodeDemo.extend({
ctor:function () {
//
// This code tests that nodeToParent works OK:
// - It tests different anchor Points
// - It tests different children anchor points
var back = cc.Sprite.create(s_back3);
this.addChild(back, -10);
back.setAnchorPoint(cc.p(0, 0));
var backSize = back.getContentSize();
var item = cc.MenuItemImage.create(s_playNormal, s_playSelect);
var menu = cc.Menu.create(item, null);
menu.alignItemsVertically();
menu.setPosition(cc.p(backSize.width / 2, backSize.height / 2));
back.addChild(menu);
var rot = cc.RotateBy.create(5, 360);
var fe = cc.RepeatForever.create(rot);
item.runAction(fe);
var move = cc.MoveBy.create(3, cc.p(200, 0));
var move_back = move.reverse();
var seq = cc.Sequence.create(move, move_back);
var fe2 = cc.RepeatForever.create(seq);
back.runAction(fe2);
},
title:function () {
return "nodeToParent transform";
}
});
var CameraOrbitTest = TestCocosNodeDemo.extend({
ctor:function () {
var s = cc.Director.getInstance().getWinSize();
var p = cc.Sprite.create(s_back3);
this.addChild(p, 0);
p.setPosition(cc.p(s.width / 2, s.height / 2));
p.setOpacity(128);
// LEFT
s = p.getContentSize();
var sprite = cc.Sprite.create(s_pathGrossini);
sprite.setScale(0.5);
p.addChild(sprite, 0);
sprite.setPosition(cc.p(s.width / 4 * 1, s.height / 2));
var cam = sprite.getCamera();
var orbit = cc.OrbitCamera.create(2, 1, 0, 0, 360, 0, 0);
sprite.runAction(cc.RepeatForever.create(orbit));
// CENTER
sprite = cc.Sprite.create(s_pathGrossini);
sprite.setScale(1.0);
p.addChild(sprite, 0);
sprite.setPosition(cc.p(s.width / 4 * 2, s.height / 2));
orbit = cc.OrbitCamera.create(2, 1, 0, 0, 360, 45, 0);
sprite.runAction(cc.RepeatForever.create(orbit));
// RIGHT
sprite = cc.Sprite.create(s_pathGrossini);
sprite.setScale(2.0);
p.addChild(sprite, 0);
sprite.setPosition(cc.p(s.width / 4 * 3, s.height / 2));
var ss = sprite.getContentSize();
orbit = cc.OrbitCamera.create(2, 1, 0, 0, 360, 90, -45);
sprite.runAction(cc.RepeatForever.create(orbit));
// PARENT
orbit = cc.OrbitCamera.create(10, 1, 0, 0, 360, 0, 90);
p.runAction(cc.RepeatForever.create(orbit));
this.setScale(1);
},
onEnter:function () {
this._super();
cc.Director.getInstance().setProjection(cc.DIRECTOR_PROJECTION_3D);
},
onExit:function () {
cc.Director.getInstance().setProjection(cc.DIRECTOR_PROJECTION_2D);
this._super();
},
title:function () {
return "Camera Orbit test";
}
});
var CameraZoomTest = TestCocosNodeDemo.extend({
_z:0,
ctor:function () {
var s = cc.Director.getInstance().getWinSize();
// LEFT
var sprite = cc.Sprite.create(s_pathGrossini);
this.addChild(sprite, 0);
sprite.setPosition(cc.p(s.width / 4 * 1, s.height / 2));
var cam = sprite.getCamera();
cam.setEyeXYZ(0, 0, 415);
// CENTER
sprite = cc.Sprite.create(s_pathGrossini);
this.addChild(sprite, 0, 40);
sprite.setPosition(cc.p(s.width / 4 * 2, s.height / 2));
// cam = [sprite camera);
// [cam setEyeX:0 eyeY:0 eyeZ:415/2);
// RIGHT
sprite = cc.Sprite.create(s_pathGrossini);
this.addChild(sprite, 0, 20);
sprite.setPosition(cc.p(s.width / 4 * 3, s.height / 2));
// cam = [sprite camera);
// [cam setEyeX:0 eyeY:0 eyeZ:-485);
// [cam setCenterX:0 centerY:0 centerZ:0);
this._z = 0;
this.scheduleUpdate();
},
update:function (dt) {
this._z += dt * 100;
var sprite = this.getChildByTag(20);
var cam = sprite.getCamera();
cam.setEyeXYZ(0, 0, this._z);
sprite = this.getChildByTag(40);
cam = sprite.getCamera();
cam.setEyeXYZ(0, 0, this._z);
},
onEnter:function () {
this._super();
cc.Director.getInstance().setProjection(cc.DIRECTOR_PROJECTION_3D);
},
onExit:function () {
cc.Director.getInstance().setProjection(cc.DIRECTOR_PROJECTION_2D);
this._super();
},
title:function () {
return "Camera Zoom test";
}
});
var CameraCenterTest = TestCocosNodeDemo.extend({
ctor:function () {
var s = cc.Director.getInstance().getWinSize();
// LEFT-TOP
var sprite = new cc.Sprite();//.node();
sprite.init();
this.addChild(sprite, 0);
sprite.setPosition(cc.p(s.width / 5 * 1, s.height / 5 * 1));
sprite.setColor(cc.c3b(255,0,0));
sprite.setTextureRect(cc.rect(0, 0, 120, 50));
var orbit = cc.OrbitCamera.create(10, 1, 0, 0, 360, 0, 0);
sprite.runAction(cc.RepeatForever.create(orbit));
// LEFT-BOTTOM
sprite = new cc.Sprite();//.node();
sprite.init();
this.addChild(sprite, 0, 40);
sprite.setPosition(cc.p(s.width / 5 * 1, s.height / 5 * 4));
sprite.setColor(cc.c3b(0,0,255));
sprite.setTextureRect(cc.rect(0, 0, 120, 50));
orbit = cc.OrbitCamera.create(10, 1, 0, 0, 360, 0, 0);
sprite.runAction(cc.RepeatForever.create(orbit));
// RIGHT-TOP
sprite = new cc.Sprite();//.node();
sprite.init();
this.addChild(sprite, 0);
sprite.setPosition(cc.p(s.width / 5 * 4, s.height / 5 * 1));
sprite.setColor(cc.yellow());
sprite.setTextureRect(cc.rect(0, 0, 120, 50));
orbit = cc.OrbitCamera.create(10, 1, 0, 0, 360, 0, 0);
sprite.runAction(cc.RepeatForever.create(orbit));
// RIGHT-BOTTOM
sprite = new cc.Sprite();//.node();
sprite.init();
this.addChild(sprite, 0, 40);
sprite.setPosition(cc.p(s.width / 5 * 4, s.height / 5 * 4));
sprite.setColor(cc.c3b(0,255,0));
sprite.setTextureRect(cc.rect(0, 0, 120, 50));
orbit = cc.OrbitCamera.create(10, 1, 0, 0, 360, 0, 0);
sprite.runAction(cc.RepeatForever.create(orbit));
// CENTER
sprite = new cc.Sprite();
sprite.init();
this.addChild(sprite, 0, 40);
sprite.setPosition(cc.p(s.width / 2, s.height / 2));
sprite.setColor(cc.white());
sprite.setTextureRect(cc.rect(0, 0, 120, 50));
orbit = cc.OrbitCamera.create(10, 1, 0, 0, 360, 0, 0);
sprite.runAction(cc.RepeatForever.create(orbit));
},
title:function () {
return "Camera Center test";
},
subtitle:function () {
return "Sprites should rotate at the same speed";
}
});
var ConvertToNode = TestCocosNodeDemo.extend({
ctor:function () {
this.setTouchEnabled(true);
var s = cc.Director.getInstance().getWinSize();
var rotate = cc.RotateBy.create(10, 360);
var action = cc.RepeatForever.create(rotate);
for (var i = 0; i < 3; i++) {
var sprite = cc.Sprite.create(s_pathGrossini);
sprite.setPosition(cc.p(s.width / 4 * (i + 1), s.height / 2));
var point = cc.Sprite.create(s_pathR1);
point.setScale(0.25);
point.setPosition(sprite.getPosition());
this.addChild(point, 10, 100 + i);
switch (i) {
case 0:
sprite.setAnchorPoint(cc.p(0,0));
break;
case 1:
sprite.setAnchorPoint(cc.p(0.5, 0.5));
break;
case 2:
sprite.setAnchorPoint(cc.p(1, 1));
break;
}
point.setPosition(sprite.getPosition());
var copy = action.copy();
sprite.runAction(copy);
this.addChild(sprite, i);
}
},
onTouchesEnded:function (touches, event) {
for (var it = 0; it < touches.length; it++) {
var touch = touches[it];
var location = touch.getLocation();
location = cc.Director.getInstance().convertToGL(location);
for (var i = 0; i < 3; i++) {
var node = this.getChildByTag(100 + i);
var p1 = node.convertToNodeSpaceAR(location);
var p2 = node.convertToNodeSpace(location);
cc.log("AR: x=" + p1.x.toFixed(2) + ", y=" + p1.y.toFixed(2) + " -- Not AR: x=" + p2.x.toFixed(2) + ", y=" + p2.y.toFixed(2));
}
}
},
title:function () {
return "Convert To Node Space";
},
subtitle:function () {
return "testing convertToNodeSpace / AR. Touch and see console";
}
});
var CocosNodeTestScene = TestScene.extend({
runThisTest:function () {
sceneIdx = -1;
MAX_LAYER = 9;
var layer = nextCocosNodeAction();
this.addChild(layer);
cc.Director.getInstance().replaceScene(this);
}
});

View File

@ -0,0 +1,75 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var CurrentLanguageTest = cc.Layer.extend({
ctor:function () {
this._super();
var s = cc.Director.getInstance().getWinSize();
var label = cc.LabelTTF.create("Current language Test", "Arial", 28);
this.addChild(label, 0);
label.setPosition(cc.p(s.width / 2, s.height - 50));
var labelLanguage = cc.LabelTTF.create("", "Arial", 20);
labelLanguage.setPosition(cc.p(s.width / 2, s.height / 2));
var currentLanguageType = cc.Application.getCurrentLanguage();
switch (currentLanguageType) {
case cc.LANGUAGE_ENGLISH:
labelLanguage.setString("current language is English");
break;
case cc.LANGUAGE_CHINESE:
labelLanguage.setString("current language is Chinese");
break;
case cc.LANGUAGE_FRENCH:
labelLanguage.setString("current language is French");
break;
case cc.LANGUAGE_GERMAN:
labelLanguage.setString("current language is German");
break;
case cc.LANGUAGE_ITALIAN:
labelLanguage.setString("current language is Italian");
break;
case cc.LANGUAGE_RUSSIAN:
labelLanguage.setString("current language is Russian");
break;
case cc.LANGUAGE_SPANISH:
labelLanguage.setString("current language is Spanish");
break;
}
this.addChild(labelLanguage);
}
});
var CurrentLanguageTestScene = TestScene.extend({
runThisTest:function () {
var layer = new CurrentLanguageTest();
this.addChild(layer);
cc.Director.getInstance().replaceScene(this);
}
});

View File

@ -0,0 +1,131 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var DrawPrimitivesTest = cc.Layer.extend({
ctor:function () {
},
draw:function () {
this._super();
var s = cc.Director.getInstance().getWinSize();
cc.renderContext.fillStyle = "rgba(255,255,255,1)";
cc.renderContext.strokeStyle = "rgba(255,255,255,1)";
// draw a simple line
// The default state is:
// Line Width: 1
// color: 255,255,255,255 (white, non-transparent)
// Anti-Aliased
cc.drawingUtil.drawLine(cc.p(0, 0), cc.p(s.width, s.height));
// line: color, width, aliased
// glLineWidth > 1 and GL_LINE_SMOOTH are not compatible
// GL_SMOOTH_LINE_WIDTH_RANGE = (1,1) on iPhone
cc.renderContext.strokeStyle = "rgba(255,0,0,1)";
cc.renderContext.lineWidth = "5";
/*glColor4ub(255,0,0,255);*/
//glColor4f(1.0, 0.0, 0.0, 1.0);
cc.drawingUtil.drawLine(cc.p(0, s.height), cc.p(s.width, 0));
// TIP:
// If you are going to use always the same color or width, you don't
// need to call it before every draw
//
// Remember: OpenGL is a state-machine.
// draw big point in the center
/*glColor4ub(0,0,255,128);*/
//glColor4f(0.0, 0.0, 1.0, 0.5);
cc.renderContext.fillStyle = "rgba(0,0,255,0.5)";
cc.drawingUtil.drawPoint(cc.p(s.width / 2, s.height / 2), 40);
// draw 4 small points
var points = [cc.p(60, 60), cc.p(70, 70), cc.p(60, 70), cc.p(70, 60)];
/*glColor4ub(0,255,255,255);*/
cc.renderContext.fillStyle = "rgba(0,255,255,1)";
//glColor4f(0.0, 1.0, 1.0, 1.0);
cc.drawingUtil.drawPoints(points, 4, 4);
// draw a green circle with 10 segments
//glLineWidth(16);
cc.renderContext.lineWidth = "16";
/*glColor4ub(0, 255, 0, 255);*/
//glColor4f(0.0, 1.0, 0.0, 1.0);
cc.renderContext.strokeStyle = "rgba(0,255,0,1)";
cc.drawingUtil.drawCircle(cc.p(s.width / 2, s.height / 2), 100, 0, 10, false);
// draw a green circle with 50 segments with line to center
//glLineWidth(2);
cc.renderContext.lineWidth = "2";
/*glColor4ub(0, 255, 255, 255);*/
//glColor4f(0.0, 1.0, 1.0, 1.0);
cc.renderContext.strokeStyle = "rgba(0,255,255,1)";
cc.drawingUtil.drawCircle(cc.p(s.width / 2, s.height / 2), 50, cc.DEGREES_TO_RADIANS(90), 50, true);
// open yellow poly
/*glColor4ub(255, 255, 0, 255);*/
//glColor4f(1.0, 1.0, 0.0, 1.0);
cc.renderContext.strokeStyle = "rgba(255,255,0,1)";
//glLineWidth(10);
cc.renderContext.lineWidth = "10";
var vertices = [cc.p(0, 0), cc.p(50, 50), cc.p(100, 50), cc.p(100, 100), cc.p(50, 100) ];
cc.drawingUtil.drawPoly(vertices, 5, false);
// closed purble poly
/*glColor4ub(255, 0, 255, 255);*/
//glColor4f(1.0, 0.0, 1.0, 1.0);
cc.renderContext.strokeStyle = "rgba(255,0,255,1)";
//glLineWidth(2);
cc.renderContext.lineWidth = "2";
var vertices2 = [cc.p(30, 130), cc.p(30, 230), cc.p(50, 200)];
cc.drawingUtil.drawPoly(vertices2, 3, true);
// draw quad bezier path
cc.drawingUtil.drawQuadBezier(cc.p(0, s.height), cc.p(s.width / 2, s.height / 2), cc.p(s.width, s.height), 50);
// draw cubic bezier path
cc.drawingUtil.drawCubicBezier(cc.p(s.width / 2, s.height / 2), cc.p(s.width / 2 + 30, s.height / 2 + 50),
cc.p(s.width / 2 + 60, s.height / 2 - 50), cc.p(s.width, s.height / 2), 100);
// restore original values
cc.renderContext.lineWidth = "1";
//glLineWidth(1);
/*glColor4ub(255,255,255,255);*/
//glColor4f(1.0, 1.0, 1.0, 1.0);
//glPointSize(1);
cc.renderContext.fillStyle = "rgba(255,255,255,1)";
cc.renderContext.strokeStyle = "rgba(255,255,255,1)";
}
});
var DrawPrimitivesTestScene = TestScene.extend({
runThisTest:function () {
var layer = new DrawPrimitivesTest();
this.addChild(layer);
cc.Director.getInstance().replaceScene(this);
}
});

View File

@ -0,0 +1,628 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
TAG_ACTION1_EASE_ACTIONS = 1;
TAG_ACTION2_EASE_ACTIONS = 2;
TAG_SLIDER_EASE_ACTIONS = 1;
var sceneIdx = -1;
// the class inherit from TestScene
// every .Scene each test used must inherit from TestScene,
// make sure the test have the menu item for back to main menu
var EaseActionsTestScene = TestScene.extend({
runThisTest:function () {
sceneIdx = -1;
this.addChild(nextEaseActionsTest());
director.replaceScene(this);
}
});
var EaseSpriteDemo = cc.Layer.extend({
_grossini:null,
_tamara:null,
_kathia:null,
_title:null,
ctor:function() {
cc.associateWithNative( this, cc.Layer );
this.init();
},
init:function() {
// this._super(cc.c4b(0, 0, 0, 255), cc.c4b(0, 128, 255, 255));
this._super();
},
title:function () {
return "No title";
},
onEnter:function () {
this._super();
// Or you can create an sprite using a filename. PNG and BMP files are supported. Probably TIFF too
this._grossini = cc.Sprite.create(s_pathGrossini);
this._tamara = cc.Sprite.create(s_pathSister1);
this._kathia = cc.Sprite.create(s_pathSister2);
this.addChild(this._grossini, 3);
this.addChild(this._kathia, 2);
this.addChild(this._tamara, 1);
this._grossini.setPosition(cc.p(60, winSize.height*1/5));
this._kathia.setPosition(cc.p(60, winSize.height/2));
this._tamara.setPosition(cc.p(60, winSize.height*4/5));
var label = cc.LabelTTF.create(this.title(), "Arial", 32);
this.addChild(label);
label.setPosition(cc.p(winSize.width / 2, winSize.height - 50));
var item1 = cc.MenuItemImage.create(s_pathB1, s_pathB2, this, this.backCallback);
var item2 = cc.MenuItemImage.create(s_pathR1, s_pathR2, this, this.restartCallback);
var item3 = cc.MenuItemImage.create(s_pathF1, s_pathF2, this, this.nextCallback);
var menu = cc.Menu.create(item1, item2, item3);
menu.setPosition(cc.p(0,0));
var cs = item2.getContentSize();
item1.setPosition( cc.p(winSize.width/2 - cs.width*2, cs.height/2) );
item2.setPosition( cc.p(winSize.width/2, cs.height/2) );
item3.setPosition( cc.p(winSize.width/2 + cs.width*2, cs.height/2) );
this.addChild(menu, 1);
},
restartCallback:function (sender) {
var s = new EaseActionsTestScene();//cc.Scene.create();
s.addChild(restartEaseActionsTest());
director.replaceScene(s);
},
nextCallback:function (sender) {
var s = new EaseActionsTestScene();//cc.Scene.create();
s.addChild(nextEaseActionsTest());
director.replaceScene(s);
},
backCallback:function (sender) {
var s = new EaseActionsTestScene();//cc.Scene.create();
s.addChild(previousEaseActionsTest());
director.replaceScene(s);
},
positionForTwo:function () {
this._grossini.setPosition(cc.p(60, winSize.height*1/5));
this._tamara.setPosition(cc.p(60, winSize.height*4/5));
this._kathia.setVisible(false);
}
});
//------------------------------------------------------------------
//
// SpriteEase
//
//------------------------------------------------------------------
var SpriteEase = EaseSpriteDemo.extend({
onEnter:function () {
this._super();
var move = cc.MoveBy.create(3, cc.p(winSize.width-80, 0));
var move_back = move.reverse();
var move_ease_in = cc.EaseIn.create(move.copy(), 3.0);
var move_ease_in_back = move_ease_in.reverse();
var move_ease_out = cc.EaseOut.create(move.copy(), 3.0);
var move_ease_out_back = move_ease_out.reverse();
var seq1 = cc.Sequence.create(move, move_back);
var seq2 = cc.Sequence.create(move_ease_in, move_ease_in_back);
var seq3 = cc.Sequence.create(move_ease_out, move_ease_out_back);
var a2 = this._grossini.runAction(cc.RepeatForever.create(seq1));
a2.setTag(1);
var a1 = this._tamara.runAction(cc.RepeatForever.create(seq2));
a1.setTag(1);
var a = this._kathia.runAction(cc.RepeatForever.create(seq3));
a.setTag(1);
this.schedule(this.testStopAction, 6);
},
title:function () {
return "EaseIn - EaseOut - Stop";
},
testStopAction:function (dt) {
this.unschedule(this.testStopAction);
this._tamara.stopActionByTag(1);
this._kathia.stopActionByTag(1);
this._grossini.stopActionByTag(1);
}
});
//------------------------------------------------------------------
//
// SpriteEaseInOut
//
//------------------------------------------------------------------
var SpriteEaseInOut = EaseSpriteDemo.extend({
onEnter:function () {
this._super();
var move = cc.MoveBy.create(3, cc.p(winSize.width-80, 0));
// id move_back = move.reverse();
var move_ease_inout1 = cc.EaseInOut.create(move.copy(), 2.0);
var move_ease_inout_back1 = move_ease_inout1.reverse();
var move_ease_inout2 = cc.EaseInOut.create(move.copy(), 3.0);
var move_ease_inout_back2 = move_ease_inout2.reverse();
var move_ease_inout3 = cc.EaseInOut.create(move.copy(), 4.0);
var move_ease_inout_back3 = move_ease_inout3.reverse();
var seq1 = cc.Sequence.create(move_ease_inout1, move_ease_inout_back1);
var seq2 = cc.Sequence.create(move_ease_inout2, move_ease_inout_back2);
var seq3 = cc.Sequence.create(move_ease_inout3, move_ease_inout_back3);
this._tamara.runAction(cc.RepeatForever.create(seq1));
this._kathia.runAction(cc.RepeatForever.create(seq2));
this._grossini.runAction(cc.RepeatForever.create(seq3));
},
title:function () {
return "EaseInOut and rates";
}
});
//------------------------------------------------------------------
//
// SpriteEaseExponential
//
//------------------------------------------------------------------
var SpriteEaseExponential = EaseSpriteDemo.extend({
onEnter:function () {
this._super();
var move = cc.MoveBy.create(3, cc.p(winSize.width-80, 0));
var move_back = move.reverse();
var move_ease_in = cc.EaseExponentialIn.create(move.copy());
var move_ease_in_back = move_ease_in.reverse();
var move_ease_out = cc.EaseExponentialOut.create(move.copy());
var move_ease_out_back = move_ease_out.reverse();
var seq1 = cc.Sequence.create(move, move_back);
var seq2 = cc.Sequence.create(move_ease_in, move_ease_in_back);
var seq3 = cc.Sequence.create(move_ease_out, move_ease_out_back);
this._grossini.runAction(cc.RepeatForever.create(seq1));
this._tamara.runAction(cc.RepeatForever.create(seq2));
this._kathia.runAction(cc.RepeatForever.create(seq3));
},
title:function () {
return "ExpIn - ExpOut actions";
}
});
//------------------------------------------------------------------
//
// SpriteEaseExponentialInOut
//
//------------------------------------------------------------------
var SpriteEaseExponentialInOut = EaseSpriteDemo.extend({
onEnter:function () {
this._super();
var move = cc.MoveBy.create(3, cc.p(winSize.width-80, 0));
var move_back = move.reverse();
var move_ease = cc.EaseExponentialInOut.create(move.copy());
var move_ease_back = move_ease.reverse(); //-. reverse()
var seq1 = cc.Sequence.create(move, move_back);
var seq2 = cc.Sequence.create(move_ease, move_ease_back);
this.positionForTwo();
this._grossini.runAction(cc.RepeatForever.create(seq1));
this._tamara.runAction(cc.RepeatForever.create(seq2));
},
title:function () {
return "EaseExponentialInOut action";
}
});
//------------------------------------------------------------------
//
// SpriteEaseSine
//
//------------------------------------------------------------------
var SpriteEaseSine = EaseSpriteDemo.extend({
onEnter:function () {
this._super();
var move = cc.MoveBy.create(3, cc.p(winSize.width-80, 0));
var move_back = move.reverse();
var move_ease_in = cc.EaseSineIn.create(move.copy());
var move_ease_in_back = move_ease_in.reverse();
var move_ease_out = cc.EaseSineOut.create(move.copy());
var move_ease_out_back = move_ease_out.reverse();
var seq1 = cc.Sequence.create(move, move_back);
var seq2 = cc.Sequence.create(move_ease_in, move_ease_in_back);
var seq3 = cc.Sequence.create(move_ease_out, move_ease_out_back);
this._grossini.runAction(cc.RepeatForever.create(seq1));
this._tamara.runAction(cc.RepeatForever.create(seq2));
this._kathia.runAction(cc.RepeatForever.create(seq3));
},
title:function () {
return "EaseSineIn - EaseSineOut";
}
});
//------------------------------------------------------------------
//
// SpriteEaseSineInOut
//
//------------------------------------------------------------------
var SpriteEaseSineInOut = EaseSpriteDemo.extend({
onEnter:function () {
this._super();
var move = cc.MoveBy.create(3, cc.p(winSize.width-80, 0));
var move_back = move.reverse();
var move_ease = cc.EaseSineInOut.create(move.copy());
var move_ease_back = move_ease.reverse();
var seq1 = cc.Sequence.create(move, move_back);
var seq2 = cc.Sequence.create(move_ease, move_ease_back);
this.positionForTwo();
this._grossini.runAction(cc.RepeatForever.create(seq1));
this._tamara.runAction(cc.RepeatForever.create(seq2));
},
title:function () {
return "EaseSineInOut action";
}
});
//------------------------------------------------------------------
//
// SpriteEaseElastic
//
//------------------------------------------------------------------
var SpriteEaseElastic = EaseSpriteDemo.extend({
onEnter:function () {
this._super();
var move = cc.MoveBy.create(3, cc.p(winSize.width-80, 0));
var move_back = move.reverse();
var move_ease_in = cc.EaseElasticIn.create(move.copy());
var move_ease_in_back = move_ease_in.reverse();
var move_ease_out = cc.EaseElasticOut.create(move.copy());
var move_ease_out_back = move_ease_out.reverse();
var seq1 = cc.Sequence.create(move, move_back);
var seq2 = cc.Sequence.create(move_ease_in, move_ease_in_back);
var seq3 = cc.Sequence.create(move_ease_out, move_ease_out_back);
this._grossini.runAction(cc.RepeatForever.create(seq1));
this._tamara.runAction(cc.RepeatForever.create(seq2));
this._kathia.runAction(cc.RepeatForever.create(seq3));
},
title:function () {
return "Elastic In - Out actions";
}
});
//------------------------------------------------------------------
//
// SpriteEaseElasticInOut
//
//------------------------------------------------------------------
var SpriteEaseElasticInOut = EaseSpriteDemo.extend({
onEnter:function () {
this._super();
var move = cc.MoveBy.create(3, cc.p(winSize.width-80, 0));
var move_ease_inout1 = cc.EaseElasticInOut.create(move.copy(), 0.3);
var move_ease_inout_back1 = move_ease_inout1.reverse();
var move_ease_inout2 = cc.EaseElasticInOut.create(move.copy(), 0.45);
var move_ease_inout_back2 = move_ease_inout2.reverse();
var move_ease_inout3 = cc.EaseElasticInOut.create(move.copy(), 0.6);
var move_ease_inout_back3 = move_ease_inout3.reverse();
var seq1 = cc.Sequence.create(move_ease_inout1, move_ease_inout_back1);
var seq2 = cc.Sequence.create(move_ease_inout2, move_ease_inout_back2);
var seq3 = cc.Sequence.create(move_ease_inout3, move_ease_inout_back3);
this._tamara.runAction(cc.RepeatForever.create(seq1));
this._kathia.runAction(cc.RepeatForever.create(seq2));
this._grossini.runAction(cc.RepeatForever.create(seq3));
},
title:function () {
return "EaseElasticInOut action";
}
});
//------------------------------------------------------------------
//
// SpriteEaseBounce
//
//------------------------------------------------------------------
var SpriteEaseBounce = EaseSpriteDemo.extend({
onEnter:function () {
this._super();
var move = cc.MoveBy.create(3, cc.p(winSize.width-80, 0));
var move_back = move.reverse();
var move_ease_in = cc.EaseBounceIn.create(move.copy());
var move_ease_in_back = move_ease_in.reverse();
var move_ease_out = cc.EaseBounceOut.create(move.copy());
var move_ease_out_back = move_ease_out.reverse();
var seq1 = cc.Sequence.create(move, move_back);
var seq2 = cc.Sequence.create(move_ease_in, move_ease_in_back);
var seq3 = cc.Sequence.create(move_ease_out, move_ease_out_back);
this._grossini.runAction(cc.RepeatForever.create(seq1));
this._tamara.runAction(cc.RepeatForever.create(seq2));
this._kathia.runAction(cc.RepeatForever.create(seq3));
},
title:function () {
return "Bounce In - Out actions";
}
});
//------------------------------------------------------------------
//
// SpriteEaseBounceInOut
//
//------------------------------------------------------------------
var SpriteEaseBounceInOut = EaseSpriteDemo.extend({
onEnter:function () {
this._super();
var move = cc.MoveBy.create(3, cc.p(winSize.width-80, 0));
var move_back = move.reverse();
var move_ease = cc.EaseBounceInOut.create(move.copy());
var move_ease_back = move_ease.reverse();
var seq1 = cc.Sequence.create(move, move_back);
var seq2 = cc.Sequence.create(move_ease, move_ease_back);
this.positionForTwo();
this._grossini.runAction(cc.RepeatForever.create(seq1));
this._tamara.runAction(cc.RepeatForever.create(seq2));
},
title:function () {
return "EaseBounceInOut action";
}
});
//------------------------------------------------------------------
//
// SpriteEaseBack
//
//------------------------------------------------------------------
var SpriteEaseBack = EaseSpriteDemo.extend({
onEnter:function () {
this._super();
var move = cc.MoveBy.create(3, cc.p(winSize.width-80, 0));
var move_back = move.reverse();
var move_ease_in = cc.EaseBackIn.create(move.copy());
var move_ease_in_back = move_ease_in.reverse();
var move_ease_out = cc.EaseBackOut.create(move.copy());
var move_ease_out_back = move_ease_out.reverse();
var seq1 = cc.Sequence.create(move, move_back);
var seq2 = cc.Sequence.create(move_ease_in, move_ease_in_back);
var seq3 = cc.Sequence.create(move_ease_out, move_ease_out_back);
this._grossini.runAction(cc.RepeatForever.create(seq1));
this._tamara.runAction(cc.RepeatForever.create(seq2));
this._kathia.runAction(cc.RepeatForever.create(seq3));
},
title:function () {
return "Back In - Out actions";
}
});
//------------------------------------------------------------------
//
// SpriteEaseBackInOut
//
//------------------------------------------------------------------
var SpriteEaseBackInOut = EaseSpriteDemo.extend({
onEnter:function () {
this._super();
var move = cc.MoveBy.create(3, cc.p(winSize.width-80, 0));
var move_back = move.reverse();
var move_ease = cc.EaseBackInOut.create(move.copy());
var move_ease_back = move_ease.reverse();
var seq1 = cc.Sequence.create(move, move_back);
var seq2 = cc.Sequence.create(move_ease, move_ease_back);
this.positionForTwo();
this._grossini.runAction(cc.RepeatForever.create(seq1));
this._tamara.runAction(cc.RepeatForever.create(seq2));
},
title:function () {
return "EaseBackInOut action";
}
});
var SpeedTest = EaseSpriteDemo.extend({
onEnter:function () {
this._super();
// rotate and jump
var jump1 = cc.JumpBy.create(4, cc.p(-winSize.width+80, 0), 100, 4);
var jump2 = jump1.reverse();
var rot1 = cc.RotateBy.create(4, 360 * 2);
var rot2 = rot1.reverse();
var seq3_1 = cc.Sequence.create(jump2, jump1);
var seq3_2 = cc.Sequence.create(rot1, rot2);
var spawn = cc.Spawn.create(seq3_1, seq3_2);
var action = cc.Speed.create(cc.RepeatForever.create(spawn), 1.0);
action.setTag(TAG_ACTION1_EASE_ACTIONS);
var action2 = action.copy();
var action3 = action.copy();
action2.setTag(TAG_ACTION1_EASE_ACTIONS);
action3.setTag(TAG_ACTION1_EASE_ACTIONS);
this._grossini.runAction(action2);
this._tamara.runAction(action3);
this._kathia.runAction(action);
this.schedule(this.altertime, 1.0);//:@selector(altertime:) interval:1.0];
},
title:function () {
return "Speed action";
},
altertime:function (dt) {
var action1 = this._grossini.getActionByTag(TAG_ACTION1_EASE_ACTIONS);
var action2 = this._tamara.getActionByTag(TAG_ACTION1_EASE_ACTIONS);
var action3 = this._kathia.getActionByTag(TAG_ACTION1_EASE_ACTIONS);
action1.setSpeed(Math.random() * 2);
action2.setSpeed(Math.random() * 2);
action3.setSpeed(Math.random() * 2);
}
});
//------------------------------------------------------------------
//
// SchedulerTest
//
//------------------------------------------------------------------
var SchedulerTest = EaseSpriteDemo.extend({
onEnter:function () {
this._super();
// rotate and jump
var jump1 = cc.JumpBy.create(4, cc.p(-winSize.width+80, 0), 100, 4);
var jump2 = jump1.reverse();
var rot1 = cc.RotateBy.create(4, 360 * 2);
var rot2 = rot1.reverse();
var seq3_1 = cc.Sequence.create(jump2, jump1);
var seq3_2 = cc.Sequence.create(rot1, rot2);
var spawn = cc.Spawn.create(seq3_1, seq3_2);
var action = cc.RepeatForever.create(spawn);
var action2 = action.copy();
var action3 = action.copy();
this._grossini.runAction(cc.Speed.create(action, 0.5));
this._tamara.runAction(cc.Speed.create(action2, 1.5));
this._kathia.runAction(cc.Speed.create(action3, 1.0));
var emitter = new cc.ParticleFireworks();
emitter.initWithTotalParticles(250);
emitter.setTexture(cc.TextureCache.getInstance().addImage("res/Images/fire.png"));
this.addChild(emitter);
},
title:function () {
return "Scheduler scaleTime Test";
}
});
//
// Flow control
//
var arrayOfEaseActionsTest = [
SpriteEase,
SpriteEaseInOut,
SpriteEaseExponential,
SpriteEaseExponentialInOut,
SpriteEaseSine,
SpriteEaseSineInOut,
SpriteEaseElastic,
SpriteEaseElasticInOut,
SpriteEaseBounce,
SpriteEaseBounceInOut,
SpriteEaseBack,
SpriteEaseBackInOut,
SpeedTest,
SchedulerTest
];
var nextEaseActionsTest = function () {
sceneIdx++;
sceneIdx = sceneIdx % arrayOfEaseActionsTest.length;
return new arrayOfEaseActionsTest[sceneIdx]();
};
var previousEaseActionsTest = function () {
sceneIdx--;
if (sceneIdx < 0)
sceneIdx += arrayOfEaseActionsTest.length;
return new arrayOfEaseActionsTest[sceneIdx]();
};
var restartEaseActionsTest = function () {
return new arrayOfEaseActionsTest[sceneIdx]();
};

View File

@ -0,0 +1,113 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var LINE_SPACE = 40;
var ITEM_TAG_BASIC = 1000;
var TEST_NOTIFICATIONCENTER = 0;
var TEST_CCCONTROLBUTTON = 1;
var TEST_COCOSBUILDER = 2;
var TEST_HTTPCLIENT = 3;
var extensionsTestItemNames = [
/* {
itemTitle:"NotificationCenterTest",
testScene:function () {
//runNotificationCenterTest();
cc.log("not implement");
}
},*/
{
itemTitle:"CCControlButtonTest",
testScene:function () {
var pManager = ControlSceneManager.getInstance();
var pScene = pManager.currentControlScene();
cc.Director.getInstance().replaceScene(pScene);
}
},
{
itemTitle:"CocosBuilderTest",
testScene:function () {
var pScene = new CocosBuilderTestScene();
if (pScene) {
pScene.runThisTest();
}
}
},
/* {
itemTitle:"HttpClientTest",
testScene:function () {
//runHttpClientTest();
cc.log("not implement");
}
},*/
{
itemTitle:"TableViewTest",
testScene:function () {
runTableViewTest();
}
}
/* {
itemTitle:"EditBoxTest",
testScene:function () {
//runEditBoxTest();
}
}*/
];
var ExtensionsMainLayer = cc.Layer.extend({
onEnter:function () {
this._super();
var winSize = cc.Director.getInstance().getWinSize();
var pMenu = cc.Menu.create();
pMenu.setPosition(cc.p(0,0));
cc.MenuItemFont.setFontName("Arial");
cc.MenuItemFont.setFontSize(24);
for (var i = 0; i < extensionsTestItemNames.length; ++i){
var selItem = extensionsTestItemNames[i];
var pItem = cc.MenuItemFont.create(selItem.itemTitle, this,
this.menuCallback);
pItem.setPosition(cc.p(winSize.width / 2, winSize.height - (i + 1) * LINE_SPACE));
pMenu.addChild(pItem, ITEM_TAG_BASIC + i);
}
this.addChild(pMenu);
},
menuCallback:function (sender) {
var nIndex = sender.getZOrder() - ITEM_TAG_BASIC;
extensionsTestItemNames[nIndex].testScene();
}
});
var ExtensionsTestScene = TestScene.extend({
runThisTest:function () {
var pLayer = new ExtensionsMainLayer();
this.addChild(pLayer);
cc.Director.getInstance().replaceScene(this);
}
});

View File

@ -0,0 +1,137 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var TAG_LABEL1 = 550;
var TAG_LABEL2 = 551;
var TAG_LABEL3 = 552;
var TAG_LABEL4 = 553;
var fontIdx = 0;
var fontList = [
"Verdana",
"Lucida Sans Unicode",
"Bookman Old Style",
"Symbol",
"Georgia",
"Trebuchet MS",
"Comic Sans MS",
"Arial Black",
"Tahoma",
"Impact"
];
function nextFontTestAction() {
fontIdx++;
fontIdx = fontIdx % fontList.length;
return fontList[fontIdx]
}
function backFontTestAction() {
fontIdx--;
if (fontIdx < 0) {
fontIdx += fontList.length;
}
return fontList[fontIdx];
}
function restartFontTestAction() {
return fontList[fontIdx];
}
FontTestScene = TestScene.extend({
runThisTest:function () {
var layer = FontTest.node();
this.addChild(layer);
cc.Director.getInstance().replaceScene(this);
}
});
FontTest = cc.Layer.extend({
ctor:function () {
var size = cc.Director.getInstance().getWinSize();
var item1 = cc.MenuItemImage.create(s_pathB1, s_pathB2, this, this.backCallback);
var item2 = cc.MenuItemImage.create(s_pathR1, s_pathR2, this, this.restartCallback);
var item3 = cc.MenuItemImage.create(s_pathF1, s_pathF2, this, this.nextCallback);
var menu = cc.Menu.create(item1, item2, item3, null);
menu.setPosition(cc.p(0,0));
item1.setPosition(cc.p(size.width / 2 - 100, 30));
item2.setPosition(cc.p(size.width / 2, 30));
item3.setPosition(cc.p(size.width / 2 + 100, 30));
this.addChild(menu, 1);
this.showFont(restartFontTestAction());
},
showFont:function (pFont) {
this.removeChildByTag(TAG_LABEL1, true);
this.removeChildByTag(TAG_LABEL2, true);
this.removeChildByTag(TAG_LABEL3, true);
this.removeChildByTag(TAG_LABEL4, true);
var s = cc.Director.getInstance().getWinSize();
var top = cc.LabelTTF.create(pFont, pFont, 24);
var left = cc.LabelTTF.create("alignment left", pFont, 32, cc.size(s.width, 50), cc.TEXT_ALIGNMENT_LEFT);
var center = cc.LabelTTF.create("alignment center", pFont, 32, cc.size(s.width, 50), cc.TEXT_ALIGNMENT_CENTER);
var right = cc.LabelTTF.create("alignment right", pFont, 32, cc.size(s.width, 50), cc.TEXT_ALIGNMENT_RIGHT);
top.setPosition(cc.p(s.width / 2, s.height * 3 / 4));
left.setPosition(cc.p(s.width / 2, s.height / 2));
center.setPosition(cc.p(s.width / 2, s.height * 3 / 8));
right.setPosition(cc.p(s.width / 2, s.height / 4));
this.addChild(left, 0, TAG_LABEL1);
this.addChild(right, 0, TAG_LABEL2);
this.addChild(center, 0, TAG_LABEL3);
this.addChild(top, 0, TAG_LABEL4);
},
restartCallback:function (sender) {
this.showFont(restartFontTestAction());
},
nextCallback:function (sender) {
this.showFont(nextFontTestAction());
},
backCallback:function (sender) {
this.showFont(backFontTestAction());
},
title:function () {
return "Font test";
}
});
FontTest.node = function () {
var ret = new FontTest();
ret.init();
return ret;
};

View File

@ -0,0 +1,141 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var HelloCocosBuilderLayer = cc.Layer.extend({
_burstSprite:null,
_testTitleLableTTF:null,
openTest:function(ccbFileName, nodeName,nodeLoader){
/* Create an autorelease CCNodeLoaderLibrary. */
var ccNodeLoaderLibrary = cc.NodeLoaderLibrary.newDefaultCCNodeLoaderLibrary();
ccNodeLoaderLibrary.registerCCNodeLoader("TestHeaderLayer", new TestHeaderLayerLoader());
if(nodeName != null && nodeLoader != null) {
ccNodeLoaderLibrary.registerCCNodeLoader(nodeName, nodeLoader);
}
/* Create an autorelease CCBReader. */
var ccbReader = new cc.CCBReader(ccNodeLoaderLibrary);
/* Read a ccbi file. */
// Load the scene from the ccbi-file, setting this class as
// the owner will cause lblTestTitle to be set by the CCBReader.
// lblTestTitle is in the TestHeader.ccbi, which is referenced
// from each of the test scenes.
var node = ccbReader.readNodeGraphFromFile("res/ccb/official/pub/", ccbFileName, this);
this._testTitleLableTTF.setString(ccbFileName);
var scene = cc.Scene.create();
if(node != null)
scene.addChild(node);
/* Push the new scene with a fancy transition. */
cc.Director.getInstance().pushScene(cc.TransitionFade.create(0.5, scene, cc.black()));
},
onResolveCCBCCMenuItemSelector:function(target,selectorName){
return null;
},
onResolveCCBCCControlSelector:function(target,selectorName){
if(this == target && "onMenuTestClicked" == selectorName){
return this.onMenuTestClicked;
}
if(this == target && "onSpriteTestClicked" == selectorName){
return this.onSpriteTestClicked;
}
if(this == target && "onButtonTestClicked" == selectorName){
return this.onButtonTestClicked;
}
if(this == target && "onLabelTestClicked" == selectorName){
return this.onLabelTestClicked;
}
if(this == target && "onParticleSystemTestClicked" == selectorName){
return this.onParticleSystemTestClicked;
}
if(this == target && "onScrollViewTestClicked" == selectorName){
return this.onScrollViewTestClicked;
}
return null;
},
onAssignCCBMemberVariable:function(target,memberVariableName,node){
if(target == this && memberVariableName == "mBurstSprite"){
if(node instanceof cc.Sprite){
this._burstSprite = node;
}
return true;
}
if(target == this && memberVariableName == "mTestTitleLabelTTF"){
if(node instanceof cc.LabelTTF){
this.mTestTitleLabelTTF = node;
}
return true;
}
return false;
},
onNodeLoaded:function(node,nodeLoader){
var ccRotateBy = cc.RotateBy.create(0.5, 10);
var ccRepeatForever = cc.RepeatForever.create(ccRotateBy);
this._burstSprite.runAction(ccRepeatForever);
},
onMenuTestClicked:function(sender,controlEvent){
this.openTest("ccb/MenuTest.ccbi", "MenuTestLayer", MenuTestLayerLoader.loader());
},
onSpriteTestClicked:function(sender,controlEvent){
this.openTest("ccb/SpriteTest.ccbi", "SpriteTestLayer", SpriteTestLayerLoader.loader());
},
onButtonTestClicked:function(sender,controlEvent){
this.openTest("ccb/ButtonTest.ccbi", "ButtonTestLayer", ButtonTestLayerLoader.loader());
},
onLabelTestClicked:function(sender,controlEvent){
this.openTest("ccb/LabelTest.ccbi", "LabelTestLayer", LabelTestLayerLoader.loader());
},
onParticleSystemTestClicked:function(sender,controlEvent){
this.openTest("ccb/ParticleSystemTest.ccbi", "ParticleSystemTestLayer", ParticleSystemTestLayerLoader.loader());
},
onScrollViewTestClicked:function(sender,controlEvent){
this.openTest("ccb/ScrollViewTest.ccbi", "ScrollViewTestLayer", ScrollViewTestLayerLoader.loader());
}
});
HelloCocosBuilderLayer.create = function(){
var retLayer = new HelloCocosBuilderLayer();
if(retLayer && retLayer.init()){
return retLayer;
}
return null;
};
var HelloCocosBuilderLayerLoader = cc.LayerLoader.extend({
_createCCNode:function(parent,ccbReader){
return HelloCocosBuilderLayer.create();
}
});

View File

@ -0,0 +1,147 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
IntervalLayer = cc.Layer.extend({
label0:null,
label1:null,
label2:null,
label3:null,
label4:null,
time0:null,
time1:null,
time2:null,
time3:null,
time4:null,
ctor:function () {
this.time0 = this.time1 = this.time2 = this.time3 = this.time4 = 0.0;
var s = cc.Director.getInstance().getWinSize();
// sun
var sun = cc.ParticleSun.create();
sun.setTexture(cc.TextureCache.getInstance().addImage(s_fire));
sun.setPosition(cc.p(s.width - 32, s.height - 32));
sun.setTotalParticles(130);
sun.setLife(0.6);
this.addChild(sun);
// timers
this.label0 = cc.LabelTTF.create("0", "Arial", 24);
this.label1 = cc.LabelTTF.create("0", "Arial", 24);
this.label2 = cc.LabelTTF.create("0", "Arial", 24);
this.label3 = cc.LabelTTF.create("0", "Arial", 24);
this.label4 = cc.LabelTTF.create("0", "Arial", 24);
this.scheduleUpdate();
this.schedule(this.step1);
this.schedule(this.step2, 0);
this.schedule(this.step3, 1.0);
this.schedule(this.step4, 2.0);
this.label0.setPosition(cc.p(s.width * 1 / 6, s.height / 2));
this.label1.setPosition(cc.p(s.width * 2 / 6, s.height / 2));
this.label2.setPosition(cc.p(s.width * 3 / 6, s.height / 2));
this.label3.setPosition(cc.p(s.width * 4 / 6, s.height / 2));
this.label4.setPosition(cc.p(s.width * 5 / 6, s.height / 2));
this.addChild(this.label0);
this.addChild(this.label1);
this.addChild(this.label2);
this.addChild(this.label3);
this.addChild(this.label4);
// Sprite
var sprite = cc.Sprite.create(s_pathGrossini);
sprite.setPosition(cc.p(40, 50));
var jump = cc.JumpBy.create(3, cc.p(s.width - 80, 0), 50, 4);
this.addChild(sprite);
sprite.runAction(cc.RepeatForever.create(cc.Sequence.create(jump, jump.reverse(), null)));
// pause button
var item1 = cc.MenuItemFont.create("Pause", this, this.onPause);
var menu = cc.Menu.create(item1, null);
menu.setPosition(cc.p(s.width / 2, s.height - 50));
this.addChild(menu);
},
onPause:function (sender) {
if (cc.Director.getInstance().isPaused()) {
cc.Director.getInstance().resume();
} else {
cc.Director.getInstance().pause();
}
},
onExit:function () {
if (cc.Director.getInstance().isPaused()) {
cc.Director.getInstance().resume();
}
this._super();
},
step1:function (dt) {
this.time1 += dt;
this.label1.setString(this.time1.toFixed(1));
},
step2:function (dt) {
this.time2 += dt;
this.label2.setString(this.time2.toFixed(1));
},
step3:function (dt) {
this.time3 += dt;
this.label3.setString(this.time3.toFixed(1));
},
step4:function (dt) {
this.time4 += dt;
this.label4.setString(this.time4.toFixed(1));
},
update:function (dt) {
this.time0 += dt;
this.label0.setString(this.time0.toFixed(1));
}
//CREATE_NODE(IntervalLayer);
});
IntervalTestScene = TestScene.extend({
runThisTest:function () {
var layer = new IntervalLayer();
this.addChild(layer);
cc.Director.getInstance().replaceScene(this);
}
});

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,405 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
cc.TAG_LAYER = 1;
var LayerTestScene = TestScene.extend({
runThisTest:function () {
sceneIdx = -1;
this.addChild(nextLayerTest());
director.replaceScene(this);
}
});
//------------------------------------------------------------------
//
// LayerTest
//
//------------------------------------------------------------------
var LayerTest = cc.Layer.extend({
_title:null,
ctor:function() {
cc.associateWithNative( this, cc.Layer );
this.init();
},
init:function() {
this._super();
},
title:function () {
return "No title";
},
subtitle:function () {
return "";
},
onEnter:function () {
this._super();
var s = director.getWinSize();
var label = cc.LabelTTF.create(this.title(), "Arial", 32);
this.addChild(label, 1);
label.setPosition(cc.p(s.width / 2, s.height - 50));
var subtitle_ = this.subtitle();
if (subtitle_) {
var l = cc.LabelTTF.create(subtitle_, "Thonburi", 16, cc.size(400, 16), cc.TEXT_ALIGNMENT_CENTER);
this.addChild(l, 1);
l.setPosition(cc.p(s.width / 2, s.height - 80));
}
var item1 = cc.MenuItemImage.create(s_pathB1, s_pathB2, this, this.onBackCallback);
var item2 = cc.MenuItemImage.create(s_pathR1, s_pathR2, this, this.onRestartCallback);
var item3 = cc.MenuItemImage.create(s_pathF1, s_pathF2, this, this.onNextCallback);
var menu = cc.Menu.create(item1, item2, item3);
menu.setPosition(cc.p(0,0));
item1.setPosition(cc.p(s.width / 2 - 100, 30));
item2.setPosition(cc.p(s.width / 2, 30));
item3.setPosition(cc.p(s.width / 2 + 100, 30));
this.addChild(menu, 1);
},
onRestartCallback:function (sender) {
var s = new LayerTestScene();
s.addChild(restartLayerTest());
director.replaceScene(s);
},
onNextCallback:function (sender) {
var s = new LayerTestScene();
s.addChild(nextLayerTest());
director.replaceScene(s);
},
onBackCallback:function (sender) {
var s = new LayerTestScene();
s.addChild(previousLayerTest());
director.replaceScene(s);
}
});
//------------------------------------------------------------------
//
// LayerTest1
//
//------------------------------------------------------------------
var LayerTest1 = LayerTest.extend({
onEnter:function () {
this._super();
var t = cc.config.deviceType;
if( t == 'browser' ) {
this.setTouchEnabled(true);
// this.setKeyboardEnabled(true);
} else if( t == 'desktop' ) {
this.setMouseEnabled(true);
} else if( t == 'mobile' ) {
this.setTouchEnabled(true);
}
var s = director.getWinSize();
var layer = cc.LayerColor.create(cc.c4b(255, 0, 0, 128), 200, 200);
layer.ignoreAnchorPointForPosition(false);
layer.setPosition(cc.p(s.width / 2, s.height / 2));
this.addChild(layer, 1, cc.TAG_LAYER);
},
title:function () {
return "ColorLayer resize (tap & move)";
},
updateSize:function (location) {
var newSize = cc.size(Math.abs(location.x - winSize.width / 2) * 2, Math.abs(location.y - winSize.height / 2) * 2);
var l = this.getChildByTag(cc.TAG_LAYER);
l.setContentSize(newSize);
},
// events
onMouseDragged : function( event ) {
var location = event.getLocation();
this.updateSize(location);
return true;
},
onTouchesMoved:function (touches, event) {
this.updateSize( touches[0].getLocation() );
}
});
var IgnoreAnchorpointTest1 = LayerTest.extend({
onEnter:function () {
this._super();
//create layer
var ws = director.getWinSize();
var layer1 = cc.LayerColor.create(cc.c4b(255, 100, 100, 128), ws.width / 2, ws.height / 2);
layer1.ignoreAnchorPointForPosition(true);
var layer2 = cc.LayerColor.create(cc.c4b(100, 255, 100, 128), ws.width / 4, ws.height / 4);
layer2.ignoreAnchorPointForPosition(true);
layer1.addChild(layer2);
layer1.setPosition(ws.width / 2, ws.height / 2);
this.addChild(layer1);
},
title:function () {
return "ignore Anchorpoint Test";
},
subtitle:function () {
return "red:true green:true";
}
});
var IgnoreAnchorpointTest2 = LayerTest.extend({
onEnter:function () {
this._super();
//create layer
var ws = director.getWinSize();
var layer1 = cc.LayerColor.create(cc.c4b(255, 100, 100, 128), ws.width / 2, ws.height / 2);
layer1.ignoreAnchorPointForPosition(true);
var layer2 = cc.LayerColor.create(cc.c4b(100, 255, 100, 128), ws.width / 4, ws.height / 4);
layer2.ignoreAnchorPointForPosition(false);
layer1.addChild(layer2);
layer1.setPosition(ws.width / 2, ws.height / 2);
this.addChild(layer1);
},
title:function () {
return "ignore Anchorpoint Test";
},
subtitle:function () {
return "red:true green:false";
}
});
var IgnoreAnchorpointTest3 = LayerTest.extend({
onEnter:function () {
this._super();
//create layer
var ws = director.getWinSize();
var layer1 = cc.LayerColor.create(cc.c4b(255, 100, 100, 128), ws.width / 2, ws.height / 2);
layer1.ignoreAnchorPointForPosition(false);
var layer2 = cc.LayerColor.create(cc.c4b(100, 255, 100, 128), ws.width / 4, ws.height / 4);
layer2.ignoreAnchorPointForPosition(false);
layer1.addChild(layer2);
layer1.setPosition(ws.width / 2, ws.height / 2);
this.addChild(layer1);
},
title:function () {
return "ignore Anchorpoint Test";
},
subtitle:function () {
return "red:false green:false";
}
});
var IgnoreAnchorpointTest4 = LayerTest.extend({
onEnter:function () {
this._super();
//create layer
var ws = director.getWinSize();
var layer1 = cc.LayerColor.create(cc.c4b(255, 100, 100, 128), ws.width / 2, ws.height / 2);
layer1.ignoreAnchorPointForPosition(false);
var layer2 = cc.LayerColor.create(cc.c4b(100, 255, 100, 128), ws.width / 4, ws.height / 4);
layer2.ignoreAnchorPointForPosition(true);
layer1.addChild(layer2);
layer1.setPosition(ws.width / 2, ws.height / 2);
this.addChild(layer1);
},
title:function () {
return "ignore Anchorpoint Test";
},
subtitle:function () {
return "red:false green:true";
}
});
//------------------------------------------------------------------
//
// LayerTest2
//
//------------------------------------------------------------------
var LayerTest2 = LayerTest.extend({
onEnter:function () {
this._super();
var s = director.getWinSize();
var layer1 = cc.LayerColor.create(cc.c4b(255, 255, 0, 80), 100, 300);
layer1.setPosition(cc.p(s.width / 3, s.height / 2));
layer1.ignoreAnchorPointForPosition(false);
this.addChild(layer1, 1);
var layer2 = cc.LayerColor.create(cc.c4b(0, 0, 255, 255), 100, 300);
layer2.setPosition(cc.p((s.width / 3) * 2, s.height / 2));
layer2.ignoreAnchorPointForPosition(false);
this.addChild(layer2, 1);
var actionTint = cc.TintBy.create(2, -255, -127, 0);
var actionTintBack = actionTint.reverse();
var seq1 = cc.Sequence.create(actionTint, actionTintBack);
layer1.runAction(seq1);
var actionFade = cc.FadeOut.create(2.0);
var actionFadeBack = actionFade.reverse();
var seq2 = cc.Sequence.create(actionFade, actionFadeBack);
layer2.runAction(seq2);
},
title:function () {
return "ColorLayer: fade and tint";
}
});
//------------------------------------------------------------------
//
// LayerTestBlend
//
//------------------------------------------------------------------
var LayerTestBlend = LayerTest.extend({
_blend:true,
init:function () {
this._super();
var layer1 = cc.LayerColor.create(cc.c4b(255, 255, 255, 80));
var sister1 = cc.Sprite.create(s_pathSister1);
var sister2 = cc.Sprite.create(s_pathSister2);
this.addChild(sister1);
this.addChild(sister2);
this.addChild(layer1, 100, cc.TAG_LAYER);
sister1.setPosition(cc.p(160, winSize.height / 2));
sister2.setPosition(cc.p(320, winSize.height / 2));
this.schedule(this.onNewBlend, 1.0);
this._blend = true;
},
onNewBlend:function (dt) {
var layer = this.getChildByTag(cc.TAG_LAYER);
var src;
var dst;
if (this._blend) {
src = gl.SRC_ALPHA;
dst = gl.ONE_MINUS_SRC_ALPHA;
} else {
src = gl.ONE_MINUS_DST_COLOR;
dst = gl.ZERO;
}
layer.setBlendFunc( src, dst );
this._blend = ! this._blend;
},
title:function () {
return "ColorLayer: blend";
}
});
//------------------------------------------------------------------
//
// LayerGradient
//
//------------------------------------------------------------------
var LayerGradient = LayerTest.extend({
init:function () {
this._super();
var layer1 = cc.LayerGradient.create(cc.c4b(255, 0, 0, 255), cc.c4b(0, 255, 0, 255), cc.p(0.9, 0.9));
this.addChild(layer1, 0, cc.TAG_LAYER);
var t = cc.config.deviceType;
if( t == 'browser' ) {
this.setTouchEnabled(true);
// this.setKeyboardEnabled(true);
} else if( t == 'desktop' ) {
this.setMouseEnabled(true);
} else if( t == 'mobile' ) {
this.setTouchEnabled(true);
}
var label1 = cc.LabelTTF.create("Compressed Interpolation: Enabled", "Marker Felt", 26);
var label2 = cc.LabelTTF.create("Compressed Interpolation: Disabled", "Marker Felt", 26);
var item1 = cc.MenuItemLabel.create(label1);
var item2 = cc.MenuItemLabel.create(label2);
var item = cc.MenuItemToggle.create(item1, item2, this, this.onToggleItem);
var menu = cc.Menu.create(item);
this.addChild(menu);
menu.setPosition(cc.p(winSize.width / 2, 100) );
},
updateGradient:function(pos) {
var diff = cc.pSub(cc.p(winSize.width / 2, winSize.height / 2), pos);
diff = cc.pNormalize(diff);
var gradient = this.getChildByTag(1);
gradient.setVector(diff);
},
onTouchesMoved:function (touches, event) {
var start = touches[0].getLocation();
this.updateGradient(start);
},
onMouseDragged : function( event ) {
var location = event.getLocation();
this.updateGradient(location);
return true;
},
onToggleItem:function (sender) {
var gradient = this.getChildByTag(cc.TAG_LAYER);
gradient.setCompressedInterpolation(!gradient.isCompressedInterpolation());
},
title:function () {
return "LayerGradient";
},
subtitle:function () {
return "Touch the screen and move your finger";
}
});
var arrayOfLayerTest = [
LayerTest1,
LayerTest2,
LayerTestBlend,
LayerGradient,
IgnoreAnchorpointTest1,
IgnoreAnchorpointTest2,
IgnoreAnchorpointTest3,
IgnoreAnchorpointTest4
];
var nextLayerTest = function () {
sceneIdx++;
sceneIdx = sceneIdx % arrayOfLayerTest.length;
return new arrayOfLayerTest[sceneIdx]();
};
var previousLayerTest = function () {
sceneIdx--;
if (sceneIdx < 0)
sceneIdx += arrayOfLayerTest.length;
return new arrayOfLayerTest[sceneIdx]();
};
var restartLayerTest = function () {
return new arrayOfLayerTest[sceneIdx]();
};

View File

@ -0,0 +1,417 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var TAG_MENU = 77771;
var TAG_MENU0 = 77770;
var TAG_MENU1 = 77771;
//------------------------------------------------------------------
//
// LayerMainMenu
//
//------------------------------------------------------------------
var LayerMainMenu = cc.Layer.extend({
ctor:function() {
cc.associateWithNative( this, cc.Layer );
this.init();
},
init:function () {
this._super();
cc.MenuItemFont.setFontSize(30);
cc.MenuItemFont.setFontName("Courier New");
var t = cc.config.deviceType;
if( t == 'browser' ) {
this.setTouchEnabled(true);
// this.setKeyboardEnabled(true);
} else if( t == 'desktop' ) {
this.setMouseEnabled(true);
} else if( t == 'mobile' ) {
this.setTouchEnabled(true);
}
// Font Item
var spriteNormal = cc.Sprite.create(s_menuItem, cc.rect(0, 23 * 2, 115, 23));
var spriteSelected = cc.Sprite.create(s_menuItem, cc.rect(0, 23, 115, 23));
var spriteDisabled = cc.Sprite.create(s_menuItem, cc.rect(0, 0, 115, 23));
var item1 = cc.MenuItemSprite.create(spriteNormal, spriteSelected, spriteDisabled, this, this.onMenuCallback);
// Image Item
var item2 = cc.MenuItemImage.create(s_sendScore, s_pressSendScore, this, this.onMenuCallback2);
// Label Item (LabelAtlas)
var labelAtlas = cc.LabelAtlas.create("0123456789", s_fpsImages, 16, 24, '.'.charCodeAt(0));
var item3 = cc.MenuItemLabel.create(labelAtlas, this, this.onMenuCallbackDisabled);
item3.setDisabledColor(cc.c3b(32, 32, 64));
item3.setColor(cc.c3b(200, 200, 255));
// Font Item
var item4 = cc.MenuItemFont.create("I toggle enable items", this, this.onMenuCallbackEnabled);
item4.setFontSize(20);
cc.MenuItemFont.setFontName("Marker Felt");
// Label Item (CCLabelBMFont)
var label = cc.LabelBMFont.create("configuration", s_bitmapFontTest3_fnt);
var item5 = cc.MenuItemLabel.create(label, this, this.onMenuCallbackConfig);
// Testing issue #500
item5.setScale(0.8);
// Font Item
var item6 = cc.MenuItemFont.create("Quit", this, this.onQuit);
var color_action = cc.TintBy.create(0.5, 0, -255, -255);
var color_back = color_action.reverse();
var seq = cc.Sequence.create(color_action, color_back);
item6.runAction(cc.RepeatForever.create(seq));
var menu = cc.Menu.create(item1, item2, item3, item4, item5, item6);
menu.alignItemsVertically();
// elastic effect
var s = director.getWinSize();
var child;
var array = menu.getChildren();
for (var i = 0; i < array.length; i++) {
if (array[i] === null)
break;
child = array[i];
var dstPoint = child.getPosition();
var offset = (s.width / 2 + 50);
if (i % 2 === 0)
offset = -offset;
child.setPosition(cc.p(dstPoint.x + offset, dstPoint.y));
child.runAction(
cc.EaseElasticOut.create(cc.MoveBy.create(2, cc.p(dstPoint.x - offset, 0)), 0.35)
);
}
this._disabledItem = item3;
this._disabledItem.setEnabled(false);
this.addChild(menu);
},
registerWithTouchDispatcher:function () {
director.getTouchDispatcher().addTargetedDelegate(this, cc.MENU_HANDLER_PRIORITY + 1, true);
},
onTouchBegan:function () {
return true;
},
onMenuCallback:function (sender) {
var scene = cc.Scene.create();
var layer = new MenuLayer2();
scene.addChild( layer );
director.pushScene( scene );
},
onMenuCallbackConfig:function (sender) {
var scene = cc.Scene.create();
var layer = new MenuLayer4();
scene.addChild( layer );
director.pushScene( scene );
},
onAllowTouches:function (dt) {
director.getTouchDispatcher().setPriority(cc.MENU_HANDLER_PRIORITY + 1, this);
this.unscheduleAllSelectors();
cc.log("Touches allowed again!");
},
onMenuCallbackDisabled:function (sender) {
// hijack all touch events for 5 seconds
director.getTouchDispatcher().setPriority(cc.MENU_HANDLER_PRIORITY - 1, this);
this.schedule(this.allowTouches, 5.0);
cc.log("TOUCHES DISABLED FOR 5 SECONDS");
},
onMenuCallbackEnabled:function (sender) {
this._disabledItem.setEnabled(!this._disabledItem.isEnabled());
},
onMenuCallback2:function (sender) {
var scene = cc.Scene.create();
var layer = new MenuLayer3();
scene.addChild( layer );
director.pushScene( scene );
},
onQuit:function (sender) {
cc.log("Quit called");
}
});
//------------------------------------------------------------------
//
// MenuLayer2
//
//------------------------------------------------------------------
var MenuLayer2 = cc.Layer.extend({
ctor:function() {
cc.associateWithNative( this, cc.Layer );
this.init();
},
init:function () {
this._super();
for (var i = 0; i < 2; i++) {
var item1 = cc.MenuItemImage.create(s_playNormal, s_playSelect, this, this.onMenuCallback);
var item2 = cc.MenuItemImage.create(s_highNormal, s_highSelect, this, this.onMenuCallbackOpacity);
var item3 = cc.MenuItemImage.create(s_aboutNormal, s_aboutSelect, this, this.onMenuCallbackAlign);
item1.setScaleX(1.5);
item2.setScaleX(0.5);
item3.setScaleX(0.5);
var menu = cc.Menu.create(item1, item2, item3);
menu.setTag(TAG_MENU);
this.addChild(menu, 0, 100 + i);
this._centeredMenu = menu.getPosition();
}
this._alignedH = true;
this.alignMenuH();
},
alignMenuH:function () {
var p;
for (var i = 0; i < 2; i++) {
var menu = this.getChildByTag(100 + i);
menu.setPosition(this._centeredMenu);
if (i === 0) {
menu.alignItemsHorizontally();
p = menu.getPosition();
menu.setPosition(cc.pAdd(p, cc.p(0, 30)));
}
else {
menu.alignItemsHorizontallyWithPadding(40);
p = menu.getPosition();
menu.setPosition(cc.pSub(p, cc.p(0, 30)));
}
}
},
alignMenusV:function () {
var p;
for (var i = 0; i < 2; i++) {
var menu = this.getChildByTag(100 + i);
menu.setPosition(this._centeredMenu);
if (i === 0) {
menu.alignItemsVertically();
p = menu.getPosition();
menu.setPosition(cc.pAdd(p, cc.p(100, 0)));
}
else {
menu.alignItemsVerticallyWithPadding(40);
p = menu.getPosition();
menu.setPosition(cc.pSub(p, cc.p(100, 0)));
}
}
},
// callbacks
onMenuCallback:function (sender) {
director.popScene();
},
onMenuCallbackOpacity:function (sender) {
var menu = sender.getParent();
var opacity = menu.getOpacity();
if (opacity == 128)
menu.setOpacity(255);
else
menu.setOpacity(128);
},
onMenuCallbackAlign:function (sender) {
this._alignedH = !this._alignedH;
if (this._alignedH)
this.alignMenuH();
else
this.alignMenusV();
}
});
//------------------------------------------------------------------
//
// MenuLayer3
//
//------------------------------------------------------------------
var MenuLayer3 = cc.Layer.extend({
ctor:function() {
cc.associateWithNative( this, cc.Layer );
this.init();
},
init:function () {
this._super();
cc.MenuItemFont.setFontName("Marker Felt");
cc.MenuItemFont.setFontSize(28);
var label = cc.LabelBMFont.create("Enable AtlasItem", s_bitmapFontTest3_fnt);
var item1 = cc.MenuItemLabel.create(label, this, this.onMenuCallback2);
var item2 = cc.MenuItemFont.create("--- Go Back ---", this, this.onMenuCallback);
var spriteNormal = cc.Sprite.create(s_menuItem, cc.rect(0, 23 * 2, 115, 23));
var spriteSelected = cc.Sprite.create(s_menuItem, cc.rect(0, 23, 115, 23));
var spriteDisabled = cc.Sprite.create(s_menuItem, cc.rect(0, 0, 115, 23));
var item3 = cc.MenuItemSprite.create(spriteNormal, spriteSelected, spriteDisabled, this, this.onMenuCallback3);
this._disabledItem = item3;
this._disabledItem.setEnabled(false);
var menu = cc.Menu.create(item1, item2, item3);
menu.setPosition(cc.p(0, 0));
var s = director.getWinSize();
item1.setPosition(cc.p(s.width / 2 - 150, s.height / 2));
item2.setPosition(cc.p(s.width / 2 - 200, s.height / 2));
item3.setPosition(cc.p(s.width / 2, s.height / 2 - 100));
var jump = cc.JumpBy.create(3, cc.p(400, 0), 50, 4);
item2.runAction(
cc.RepeatForever.create(
cc.Sequence.create(jump, jump.reverse())
)
);
var spin1 = cc.RotateBy.create(3, 360);
var spin2 = spin1.copy();
var spin3 = spin1.copy();
item1.runAction(cc.RepeatForever.create(spin1));
item2.runAction(cc.RepeatForever.create(spin2));
item3.runAction(cc.RepeatForever.create(spin3));
this.addChild(menu);
},
// callbacks
onMenuCallback:function (sender) {
director.popScene();
},
onMenuCallback2:function (sender) {
this._disabledItem.setEnabled(!this._disabledItem.isEnabled());
this._disabledItem.stopAllActions();
},
onMenuCallback3:function () {
cc.log("do something");
}
});
var MenuLayer4 = cc.Layer.extend({
ctor:function () {
cc.associateWithNative( this, cc.Layer );
this.init();
},
init:function () {
this._super();
cc.MenuItemFont.setFontName("American Typewriter");
cc.MenuItemFont.setFontSize(18);
var title1 = cc.MenuItemFont.create("Sound");
title1.setEnabled(false);
cc.MenuItemFont.setFontName("Marker Felt");
cc.MenuItemFont.setFontSize(34);
// you can create a ToggleItem by passing the items
// and later setting the callback
var item1 = cc.MenuItemToggle.create(
cc.MenuItemFont.create("On"),
cc.MenuItemFont.create("Off") );
item1.setCallback( this, this.onMenuCallback );
cc.MenuItemFont.setFontName("American Typewriter");
cc.MenuItemFont.setFontSize(18);
var title2 = cc.MenuItemFont.create("Music");
title2.setEnabled(false);
cc.MenuItemFont.setFontName("Marker Felt");
cc.MenuItemFont.setFontSize(34);
// or you can create a ToggleItem by passing the items
// an the callback at the last arguments.
var item2 = cc.MenuItemToggle.create(
cc.MenuItemFont.create("Off"),
cc.MenuItemFont.create("33%"),
cc.MenuItemFont.create("66%"),
cc.MenuItemFont.create("On"),
this,
this.onMenuCallback
);
cc.MenuItemFont.setFontName("American Typewriter");
cc.MenuItemFont.setFontSize(18);
var title3 = cc.MenuItemFont.create("Quality");
title3.setEnabled(false);
cc.MenuItemFont.setFontName("Marker Felt");
cc.MenuItemFont.setFontSize(34);
var item3 = cc.MenuItemToggle.create(
cc.MenuItemFont.create("High"),
cc.MenuItemFont.create("Low"),
this,
this.onMenuCallback
);
cc.MenuItemFont.setFontName("American Typewriter");
cc.MenuItemFont.setFontSize(18);
var title4 = cc.MenuItemFont.create("Orientation");
title4.setEnabled(false);
cc.MenuItemFont.setFontName("Marker Felt");
cc.MenuItemFont.setFontSize(34);
var item4 = cc.MenuItemToggle.create(
cc.MenuItemFont.create("Landscape Left"),
cc.MenuItemFont.create("Landscape Right"),
cc.MenuItemFont.create("Portrait"),
this,
this.onMenuCallback
);
// you can change the one of the items by doing this
item4.setSelectedIndex(2);
cc.MenuItemFont.setFontName("Marker Felt");
cc.MenuItemFont.setFontSize(34);
var label = cc.LabelBMFont.create("go back", s_bitmapFontTest3_fnt);
var back = cc.MenuItemLabel.create(label, this, this.onBackCallback);
var menu = cc.Menu.create(
title1, title2,
item1, item2,
title3, title4,
item3, item4,
back); // 9 items.
menu.alignItemsInColumns(2, 2, 2, 2, 1);
this.addChild(menu);
},
onMenuCallback:function (sender) {
cc.log("Callback called");
},
onBackCallback:function (sender) {
director.popScene();
}
});
var MenuTestScene = TestScene.extend({
runThisTest:function () {
var mainLayer = new LayerMainMenu();
this.addChild(mainLayer, 0);
director.replaceScene(mainLayer);
}
});

View File

@ -0,0 +1,164 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var touchColors = [
cc.yellow(),
cc.c3b(0,0,255),
cc.c3b(0,255,0),
cc.c3b(255,0,0),
cc.magenta()
];
var TouchPoint = cc.Node.extend({
_touchPoint:null,
_tonchColor:null,
_styleStr:null,
ctor:function () {
this._touchPoint = cc.p(0, 0);
this._tonchColor = new cc.Color3B(255, 255, 255);
this._styleStr = "rgba(" + this._tonchColor.r + "," + this._tonchColor.g + "," + this._tonchColor.b + ", 1)";
//this.setShaderProgram(cc.ShaderCache.getInstance().programForKey(kCCShader_PositionTextureColor));
},
draw:function () {
var context = cc.renderContext;
context.save();
context.fillStyle = this._styleStr;
context.strokeStyle = this._styleStr;
context.lineWidth = "10";
var size = this.getContentSize();
cc.drawingUtil.drawLine(cc.p(0, this._touchPoint.y), cc.p(size.width, this._touchPoint.y));
cc.drawingUtil.drawLine(cc.p(this._touchPoint.x, 0), cc.p(this._touchPoint.x, size.height));
cc.drawingUtil.drawPoint(this._touchPoint, 15);
context.restore();
},
setTouchPos:function (pt) {
this._touchPoint = pt;
},
setTouchColor:function (color) {
this._tonchColor = color;
this._styleStr = "rgba(" + this._tonchColor.r + "," + this._tonchColor.g + "," + this._tonchColor.b + ", 1)";
}
});
TouchPoint.touchPointWithParent = function (parent) {
var ret = new TouchPoint();
ret.setContentSize(parent.getContentSize());
ret.setAnchorPoint(cc.p(0, 0));
return ret;
};
var MultiTouchTestLayer = cc.Layer.extend({
init:function () {
if (this._super()) {
this.setTouchEnabled(true);
return true;
}
return false;
},
registerWithTouchDispatcher:function () {
cc.Director.getInstance().getTouchDispatcher().addStandardDelegate(this, 0);
},
_savePointArr:[],
_isPressed:false,
onTouchesBegan:function (touches, event) {
this._isPressed = true;
if (!touches)
return;
this._clearSavePointArr();
for (var i = 0; i < touches.length; i++) {
var touch = touches[i];
var touchPoint = TouchPoint.touchPointWithParent(this);
var location = touch.getLocation();
touchPoint.setTouchPos(location);
touchPoint.setTouchColor(touchColors[i]);
this.addChild(touchPoint);
this._savePointArr.push(touchPoint);
}
},
_clearSavePointArr:function () {
for (var i = 0; i < this._savePointArr.length; i++) {
this._savePointArr[i].removeFromParentAndCleanup(true);
}
},
onTouchesMoved:function (touches, event) {
this._clearSavePointArr();
if (!cc.Browser.isMobile) {
if (!this._isPressed) {
return;
}
}
for (var i = 0; i < touches.length; i++) {
var touch = touches[i];
var touchPoint = TouchPoint.touchPointWithParent(this);
var location = touch.getLocation();
touchPoint.setTouchPos(location);
touchPoint.setTouchColor(touchColors[i]);
this.addChild(touchPoint);
this._savePointArr.push(touchPoint);
}
},
onTouchesEnded:function (touches, event) {
this._isPressed = false;
this._clearSavePointArr();
},
onTouchesCancelled:function (touches, event) {
this.onTouchesEnded(touches, event);
}
});
MultiTouchTestLayer.create = function () {
var ret = new MultiTouchTestLayer();
if (ret && ret.init()) {
return ret;
}
return null;
};
var MultiTouchTestScene = TestScene.extend({
runThisTest:function () {
var layer = MultiTouchTestLayer.create();
this.addChild(layer, 0);
cc.Director.getInstance().replaceScene(this);
}
});

View File

@ -0,0 +1,100 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var PADDLE_STATE_GRABBED = 0;
var PADDLE_STATE_UNGRABBED = 1;
var Paddle = cc.Sprite.extend({
_state:PADDLE_STATE_UNGRABBED,
_rect:null,
rect:function () {
return cc.rect(-this._rect.size.width / 2, -this._rect.size.height / 2, this._rect.size.width, this._rect.size.height);
},
initWithTexture:function (aTexture) {
if (this._super(aTexture)) {
this._state = PADDLE_STATE_UNGRABBED;
}
if (aTexture instanceof cc.Texture2D) {
var s = aTexture.getContentSize();
this._rect = cc.rect(0, 0, s.width, s.height);
} else if ((aTexture instanceof HTMLImageElement) || (aTexture instanceof HTMLCanvasElement)) {
this._rect = cc.rect(0, 0, aTexture.width, aTexture.height);
}
return true;
},
onEnter:function () {
cc.Director.getInstance().getTouchDispatcher().addTargetedDelegate(this, 0, true);
this._super();
},
onExit:function () {
cc.Director.getInstance().getTouchDispatcher().removeDelegate(this);
this._super();
},
containsTouchLocation:function (touch) {
var getPoint = touch.getLocation();
var myRect = this.rect();
myRect.origin.x += this.getPosition().x;
myRect.origin.y += this.getPosition().y;
return cc.Rect.CCRectContainsPoint(myRect, getPoint);//this.convertTouchToNodeSpaceAR(touch));
},
onTouchBegan:function (touch, event) {
if (this._state != PADDLE_STATE_UNGRABBED) return false;
if (!this.containsTouchLocation(touch)) return false;
this._state = PADDLE_STATE_GRABBED;
return true;
},
onTouchMoved:function (touch, event) {
// If it weren't for the TouchDispatcher, you would need to keep a reference
// to the touch from touchBegan and check that the current touch is the same
// as that one.
// Actually, it would be even more complicated since in the Cocos dispatcher
// you get CCSets instead of 1 UITouch, so you'd need to loop through the set
// in each touchXXX method.
cc.Assert(this._state == PADDLE_STATE_GRABBED, "Paddle - Unexpected state!");
var touchPoint = touch.getLocation();
//touchPoint = cc.Director.getInstance().convertToGL( touchPoint );
this.setPosition(cc.p(touchPoint.x, this.getPosition().y));
},
onTouchEnded:function (touch, event) {
cc.Assert(this._state == PADDLE_STATE_GRABBED, "Paddle - Unexpected state!");
this._state = PADDLE_STATE_UNGRABBED;
},
touchDelegateRetain:function () {
},
touchDelegateRelease:function () {
}
});
Paddle.paddleWithTexture = function (aTexture) {
var paddle = new Paddle();
paddle.initWithTexture(aTexture);
return paddle;
};

View File

@ -0,0 +1,274 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var TAG_NODE = 9960;
var TAG_GROSSINI = 9961;
var sceneIdx = -1;
var MAX_LAYER = 2;
function createParallaxTestLayer(index) {
switch (index) {
case 0:
return new Parallax1();
case 1:
return new Parallax2();
}
return null;
}
function nextParallaxAction() {
sceneIdx++;
sceneIdx = sceneIdx % MAX_LAYER;
var layer = createParallaxTestLayer(sceneIdx);
return layer;
}
function backParallaxAction() {
sceneIdx--;
var total = MAX_LAYER;
if (sceneIdx < 0)
sceneIdx += total;
var layer = createParallaxTestLayer(sceneIdx);
return layer;
}
function restartParallaxAction() {
var layer = createParallaxTestLayer(sceneIdx);
return layer;
}
ParallaxDemo = cc.Layer.extend({
_atlas:null,
ctor:function () {
},
title:function () {
return "No title";
},
onEnter:function () {
this._super();
var s = cc.Director.getInstance().getWinSize();
var label = cc.LabelTTF.create(this.title(), "Arial", 28);
this.addChild(label, 1);
label.setPosition(cc.p(s.width / 2, s.height - 50));
var item1 = cc.MenuItemImage.create(s_pathB1, s_pathB2, this, this.backCallback);
var item2 = cc.MenuItemImage.create(s_pathR1, s_pathR2, this, this.restartCallback);
var item3 = cc.MenuItemImage.create(s_pathF1, s_pathF2, this, this.nextCallback);
var menu = cc.Menu.create(item1, item2, item3, null);
menu.setPosition(cc.p(0,0));
item1.setPosition(cc.p(s.width / 2 - 100, 30));
item2.setPosition(cc.p(s.width / 2, 30));
item3.setPosition(cc.p(s.width / 2 + 100, 30));
this.addChild(menu, 1);
},
restartCallback:function (sender) {
var s = new ParallaxTestScene();
s.addChild(restartParallaxAction());
cc.Director.getInstance().replaceScene(s);
},
nextCallback:function (sender) {
var s = new ParallaxTestScene();
s.addChild(nextParallaxAction());
cc.Director.getInstance().replaceScene(s);
},
backCallback:function (sender) {
var s = new ParallaxTestScene();
s.addChild(backParallaxAction());
cc.Director.getInstance().replaceScene(s);
}
});
Parallax1 = ParallaxDemo.extend({
_root:null,
_target:null,
_streak:null,
ctor:function () {
// Top Layer, a simple image
var cocosImage = cc.Sprite.create(s_power);
// scale the image (optional)
cocosImage.setScale(0.5);
// change the transform anchor point to 0,0 (optional)
cocosImage.setAnchorPoint(cc.p(0, 0));
// Middle layer: a Tile map atlas
//var tilemap = cc.TileMapAtlas.create(s_tilesPng, s_levelMapTga, 16, 16);
var tilemap = cc.TMXTiledMap.create("res/TileMaps/orthogonal-test2.tmx");
// change the transform anchor to 0,0 (optional)
tilemap.setAnchorPoint(cc.p(0, 0));
// Anti Aliased images
//tilemap.getTexture().setAntiAliasTexParameters();
// background layer: another image
var background = cc.Sprite.create(s_back);
// scale the image (optional)
//background.setScale(1.5);
// change the transform anchor point (optional)
background.setAnchorPoint(cc.p(0, 0));
// create a void node, a parent node
var voidNode = cc.ParallaxNode.create();
// NOW add the 3 layers to the 'void' node
// background image is moved at a ratio of 0.4x, 0.5y
voidNode.addChild(background, -1, cc.p(0.4, 0.5), cc.p(0,0));
// tiles are moved at a ratio of 2.2x, 1.0y
voidNode.addChild(tilemap, 1, cc.p(2.2, 1.0), cc.p(0, 0));
// top image is moved at a ratio of 3.0x, 2.5y
voidNode.addChild(cocosImage, 2, cc.p(3.0, 2.5), cc.p(0, 0));
// now create some actions that will move the 'void' node
// and the children of the 'void' node will move at different
// speed, thus, simulation the 3D environment
var goUp = cc.MoveBy.create(4, cc.p(0, 100));
var goDown = goUp.reverse();
var go = cc.MoveBy.create(8, cc.p(200, 0));
var goBack = go.reverse();
var seq = cc.Sequence.create(goUp, go, goDown, goBack, null);
voidNode.runAction((cc.RepeatForever.create(seq) ));
this.addChild(voidNode);
},
title:function () {
return "Parallax: parent and 3 children";
}
});
Parallax2 = ParallaxDemo.extend({
_root:null,
_target:null,
_streak:null,
ctor:function () {
this.setTouchEnabled(true);
// Top Layer, a simple image
var cocosImage = cc.Sprite.create(s_power);
// scale the image (optional)
cocosImage.setScale(0.5);
// change the transform anchor point to 0,0 (optional)
cocosImage.setAnchorPoint(cc.p(0, 0));
// Middle layer: a Tile map atlas
//var tilemap = cc.TileMapAtlas.create(s_tilesPng, s_levelMapTga, 16, 16);
var tilemap = cc.TMXTiledMap.create("res/TileMaps/orthogonal-test2.tmx");
// change the transform anchor to 0,0 (optional)
tilemap.setAnchorPoint(cc.p(0, 0));
// Anti Aliased images
//tilemap.getTexture().setAntiAliasTexParameters();
// background layer: another image
var background = cc.Sprite.create(s_back);
// scale the image (optional)
//background.setScale(1.5);
// change the transform anchor point (optional)
background.setAnchorPoint(cc.p(0, 0));
// create a void node, a parent node
var voidNode = cc.ParallaxNode.create();
// NOW add the 3 layers to the 'void' node
// background image is moved at a ratio of 0.4x, 0.5y
voidNode.addChild(background, -1, cc.p(0.4, 0.5), cc.p(0,0));
// tiles are moved at a ratio of 1.0, 1.0y
voidNode.addChild(tilemap, 1, cc.p(1.0, 1.0), cc.p(0, 0));
// top image is moved at a ratio of 3.0x, 2.5y
voidNode.addChild(cocosImage, 2, cc.p(3.0, 2.5), cc.p(0, 0));
this.addChild(voidNode, 0, TAG_NODE);
},
registerWithTouchDispatcher:function () {
cc.Director.getInstance().getTouchDispatcher().addTargetedDelegate(this, 0, true);
},
onTouchBegan:function (touch, event) {
return true;
},
onTouchMoved:function (touch, event) {
var node = this.getChildByTag(TAG_NODE);
var currentPos = node.getPosition();
node.setPosition(cc.pAdd(currentPos, touch.getDelta() ));
},
title:function () {
return "Parallax: drag screen";
}
});
ParallaxTestScene = TestScene.extend({
runThisTest:function () {
sceneIdx = -1;
MAX_LAYER = 2;
var layer = nextParallaxAction();
this.addChild(layer);
cc.Director.getInstance().replaceScene(this);
}
});

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,510 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var TAG_BASE = 2000;
var MAX_NODES = 1500;
var NODES_INCREASE = 50;
var s_nCurCase = 0;
////////////////////////////////////////////////////////
//
// NodeChildrenMenuLayer
//
////////////////////////////////////////////////////////
var NodeChildrenMenuLayer = PerformBasicLayer.extend({
_maxCases:4,
showCurrentTest:function () {
var nodes = (this.getParent()).getQuantityOfNodes();
var scene = null;
switch (this._curCase) {
case 0:
scene = new IterateSpriteSheetCArray();
break;
case 1:
scene = new AddSpriteSheet();
break;
case 2:
scene = new RemoveSpriteSheet();
break;
case 3:
scene = new ReorderSpriteSheet();
break;
}
s_nCurCase = this._curCase;
if (scene) {
scene.initWithQuantityOfNodes(nodes);
cc.Director.getInstance().replaceScene(scene);
}
}
});
////////////////////////////////////////////////////////
//
// NodeChildrenMainScene
//
////////////////////////////////////////////////////////
var NodeChildrenMainScene = cc.Scene.extend({
_lastRenderedCount:null,
_quantityOfNodes:null,
_currentQuantityOfNodes:null,
initWithQuantityOfNodes:function (nodes) {
//srand(time());
var s = cc.Director.getInstance().getWinSize();
// Title
var label = cc.LabelTTF.create(this.title(), "Arial", 40);
this.addChild(label, 1);
label.setPosition(cc.p(s.width / 2, s.height - 32));
label.setColor(cc.c3b(255, 255, 40));
// Subtitle
var strSubTitle = this.subtitle();
if (strSubTitle.length) {
var l = cc.LabelTTF.create(strSubTitle, "Thonburi", 16);
this.addChild(l, 1);
l.setPosition(cc.p(s.width / 2, s.height - 80));
}
this._lastRenderedCount = 0;
this._currentQuantityOfNodes = 0;
this._quantityOfNodes = nodes;
cc.MenuItemFont.setFontSize(65);
var that = this;
var decrease = cc.MenuItemFont.create(" - ", this, this.onDecrease);
decrease.setColor(cc.c3b(0, 200, 20));
var increase = cc.MenuItemFont.create(" + ", this, this.onIncrease);
increase.setColor(cc.c3b(0, 200, 20));
var menu = cc.Menu.create(decrease, increase, null);
menu.alignItemsHorizontally();
menu.setPosition(cc.p(s.width / 2, s.height / 2 + 15));
this.addChild(menu, 1);
var infoLabel = cc.LabelTTF.create("0 nodes", "Marker Felt", 30);
infoLabel.setColor(cc.c3b(0, 200, 20));
infoLabel.setPosition(cc.p(s.width / 2, s.height / 2 - 15));
this.addChild(infoLabel, 1, TAG_INFO_LAYER);
var menu = new NodeChildrenMenuLayer(true, 4, s_nCurCase);
this.addChild(menu);
this.updateQuantityLabel();
this.updateQuantityOfNodes();
},
title:function () {
return "No title";
},
subtitle:function () {
return "";
},
updateQuantityOfNodes:function () {
},
onDecrease:function (sender) {
this._quantityOfNodes -= NODES_INCREASE;
if (this._quantityOfNodes < 0) {
this._quantityOfNodes = 0;
}
this.updateQuantityLabel();
this.updateQuantityOfNodes();
},
onIncrease:function (sender) {
this._quantityOfNodes += NODES_INCREASE;
if (this._quantityOfNodes > MAX_NODES) {
this._quantityOfNodes = MAX_NODES
}
this.updateQuantityLabel();
this.updateQuantityOfNodes();
},
updateQuantityLabel:function () {
if (this._quantityOfNodes != this._lastRenderedCount) {
var infoLabel = this.getChildByTag(TAG_INFO_LAYER);
var str = this._quantityOfNodes + " nodes";
infoLabel.setString(str);
this._lastRenderedCount = this._quantityOfNodes;
}
},
getQuantityOfNodes:function () {
return this._quantityOfNodes;
}
});
////////////////////////////////////////////////////////
//
// IterateSpriteSheet
//
////////////////////////////////////////////////////////
var IterateSpriteSheet = NodeChildrenMainScene.extend({
_batchNode:null,
_profilingTimer:null,
ctor:function () {
if (cc.ENABLE_PROFILERS) {
this._profilingTimer = new cc.ProfilingTimer();
}
},
updateQuantityOfNodes:function () {
var s = cc.Director.getInstance().getWinSize();
// increase nodes
if (this._currentQuantityOfNodes < this._quantityOfNodes) {
for (var i = 0; i < (this._quantityOfNodes - this._currentQuantityOfNodes); i++) {
var sprite = cc.Sprite.createWithTexture(this._batchNode.getTexture(), cc.rect(0, 0, 32, 32));
this._batchNode.addChild(sprite);
sprite.setPosition(cc.p(Math.random() * s.width, Math.random() * s.height));
}
}
// decrease nodes
else if (this._currentQuantityOfNodes > this._quantityOfNodes) {
for (var i = 0; i < (this._currentQuantityOfNodes - this._quantityOfNodes); i++) {
var index = this._currentQuantityOfNodes - i - 1;
this._batchNode.removeChildAtIndex(index, true);
}
}
this._currentQuantityOfNodes = this._quantityOfNodes;
},
initWithQuantityOfNodes:function (nodes) {
this._batchNode = cc.SpriteBatchNode.create("res/Images/spritesheet1.png");
this.addChild(this._batchNode);
this._super(nodes);
if (cc.ENABLE_PROFILERS) {
this._profilingTimer = cc.Profiler.timerWithName(this.profilerName(), this);
}
this.scheduleUpdate();
},
update:function (dt) {
},
profilerName:function () {
return "none";
}
});
////////////////////////////////////////////////////////
//
// IterateSpriteSheetFastEnum
//
////////////////////////////////////////////////////////
var IterateSpriteSheetFastEnum = IterateSpriteSheet.extend({
update:function (dt) {
// iterate using fast enumeration protocol
var children = this._batchNode.getChildren();
if (cc.ENABLE_PROFILERS) {
cc.ProfilingBeginTimingBlock(this._profilingTimer);
}
for (var i = 0; i < children.length; i++) {
var sprite = children[i];
sprite.setVisible(false);
}
if (cc.ENABLE_PROFILERS) {
cc.ProfilingEndTimingBlock(this._profilingTimer);
}
},
title:function () {
return "A - Iterate SpriteSheet";
},
subtitle:function () {
return "Iterate children using Fast Enum API. See console";
},
profilerName:function () {
return "iter fast enum";
}
});
////////////////////////////////////////////////////////
//
// IterateSpriteSheetCArray
//
////////////////////////////////////////////////////////
var IterateSpriteSheetCArray = IterateSpriteSheet.extend({
update:function (dt) {
// iterate using fast enumeration protocol
var children = this._batchNode.getChildren();
if (cc.ENABLE_PROFILERS) {
cc.ProfilingBeginTimingBlock(this._profilingTimer);
}
for (var i = 0; i < children.length; i++) {
var sprite = children[i];
sprite.setVisible(false);
}
if (cc.ENABLE_PROFILERS) {
cc.ProfilingEndTimingBlock(this._profilingTimer);
}
},
title:function () {
return "B - Iterate SpriteSheet";
},
subtitle:function () {
return "Iterate children using Array API. See console";
},
profilerName:function () {
return "iter c-array";
}
});
////////////////////////////////////////////////////////
//
// AddRemoveSpriteSheet
//
////////////////////////////////////////////////////////
var AddRemoveSpriteSheet = NodeChildrenMainScene.extend({
_batchNode:null,
ctor:function () {
if (cc.ENABLE_PROFILERS) {
this._profilingTimer = new cc.ProfilingTimer();
}
},
updateQuantityOfNodes:function () {
var s = cc.Director.getInstance().getWinSize();
// increase nodes
if (this._currentQuantityOfNodes < this._quantityOfNodes) {
for (var i = 0; i < (this._quantityOfNodes - this._currentQuantityOfNodes); i++) {
var sprite = cc.Sprite.createWithTexture(this._batchNode.getTexture(), cc.rect(0, 0, 32, 32));
this._batchNode.addChild(sprite);
sprite.setPosition(cc.p(Math.random() * s.width, Math.random() * s.height));
sprite.setVisible(false);
}
}
// decrease nodes
else if (this._currentQuantityOfNodes > this._quantityOfNodes) {
for (var i = 0; i < (this._currentQuantityOfNodes - this._quantityOfNodes); i++) {
var index = this._currentQuantityOfNodes - i - 1;
this._batchNode.removeChildAtIndex(index, true);
}
}
this._currentQuantityOfNodes = this._quantityOfNodes;
},
initWithQuantityOfNodes:function (nodes) {
this._batchNode = cc.SpriteBatchNode.create("res/Images/spritesheet1.png");
this.addChild(this._batchNode);
this._super(nodes);
if (cc.ENABLE_PROFILERS) {
this._profilingTimer = cc.Profiler.timerWithName(this.profilerName(), this);
}
this.scheduleUpdate();
},
update:function (dt) {
},
profilerName:function () {
return "none";
}
});
////////////////////////////////////////////////////////
//
// AddSpriteSheet
//
////////////////////////////////////////////////////////
var AddSpriteSheet = AddRemoveSpriteSheet.extend({
update:function (dt) {
// reset seed
//srandom(0);
// 15 percent
var totalToAdd = this._currentQuantityOfNodes * 0.15;
if (totalToAdd > 0) {
var sprites = [];
var zs = [];
// Don't include the sprite creation time and random as part of the profiling
for (var i = 0; i < totalToAdd; i++) {
var sprite = cc.Sprite.createWithTexture(this._batchNode.getTexture(), cc.rect(0, 0, 32, 32));
sprites.push(sprite);
zs[i] = cc.RANDOM_MINUS1_1() * 50;
}
// add them with random Z (very important!)
if (cc.ENABLE_PROFILERS)
cc.ProfilingBeginTimingBlock(this._profilingTimer);
}
for (var i = 0; i < totalToAdd; i++) {
this._batchNode.addChild(sprites[i], zs[i], TAG_BASE + i);
}
if (cc.ENABLE_PROFILERS) {
cc.ProfilingEndTimingBlock(this._profilingTimer);
}
// remove them
for (var i = 0; i < totalToAdd; i++) {
this._batchNode.removeChildByTag(TAG_BASE + i, true);
}
delete zs;
},
title:function () {
return "C - Add to spritesheet";
},
subtitle:function () {
return "Adds %10 of total sprites with random z. See console";
},
profilerName:function () {
return "add sprites";
}
})
;
////////////////////////////////////////////////////////
//
// RemoveSpriteSheet
//
////////////////////////////////////////////////////////
var RemoveSpriteSheet = AddRemoveSpriteSheet.extend({
update:function (dt) {
//srandom(0);
// 15 percent
var totalToAdd = this._currentQuantityOfNodes * 0.15;
if (totalToAdd > 0) {
var sprites = [];
// Don't include the sprite creation time as part of the profiling
for (var i = 0; i < totalToAdd; i++) {
var sprite = cc.Sprite.createWithTexture(this._batchNode.getTexture(), cc.rect(0, 0, 32, 32));
sprites.push(sprite);
}
// add them with random Z (very important!)
for (var i = 0; i < totalToAdd; i++) {
this._batchNode.addChild(sprites[i], cc.RANDOM_MINUS1_1() * 50, TAG_BASE + i);
}
// remove them
if (cc.ENABLE_PROFILERS) {
cc.ProfilingBeginTimingBlock(this._profilingTimer);
}
for (var i = 0; i < totalToAdd; i++) {
this._batchNode.removeChildByTag(TAG_BASE + i, true);
}
if (cc.ENABLE_PROFILERS) {
cc.ProfilingEndTimingBlock(this._profilingTimer);
}
}
},
title:function () {
return "D - Del from spritesheet";
},
subtitle:function () {
return "Remove %10 of total sprites placed randomly. See console";
},
profilerName:function () {
return "remove sprites";
}
});
////////////////////////////////////////////////////////
//
// ReorderSpriteSheet
//
////////////////////////////////////////////////////////
var ReorderSpriteSheet = AddRemoveSpriteSheet.extend({
update:function (dt) {
//srandom(0);
// 15 percent
var totalToAdd = this._currentQuantityOfNodes * 0.15;
if (totalToAdd > 0) {
var sprites = [];
// Don't include the sprite creation time as part of the profiling
for (var i = 0; i < totalToAdd; i++) {
var sprite = cc.Sprite.createWithTexture(this._batchNode.getTexture(), cc.rect(0, 0, 32, 32));
sprites.push(sprite);
}
// add them with random Z (very important!)
for (var i = 0; i < totalToAdd; i++) {
this._batchNode.addChild(sprites[i], cc.RANDOM_MINUS1_1() * 50, TAG_BASE + i);
}
// [this._batchNode sortAllChildren];
// reorder them
if (cc.ENABLE_PROFILERS) {
cc.ProfilingBeginTimingBlock(this._profilingTimer);
}
for (var i = 0; i < totalToAdd; i++) {
var node = this._batchNode.getChildren()[i];
;
this._batchNode.reorderChild(node, cc.RANDOM_MINUS1_1() * 50);
}
if (cc.ENABLE_PROFILERS) {
cc.ProfilingEndTimingBlock(this._profilingTimer);
}
}
// remove them
for (var i = 0; i < totalToAdd; i++) {
this._batchNode.removeChildByTag(TAG_BASE + i, true);
}
},
title:function () {
return "E - Reorder from spritesheet";
},
subtitle:function () {
return "Reorder %10 of total sprites placed randomly. See console";
},
profilerName:function () {
return "reorder sprites";
}
});
function runNodeChildrenTest() {
var scene = new IterateSpriteSheetCArray();
scene.initWithQuantityOfNodes(NODES_INCREASE);
cc.Director.getInstance().replaceScene(scene);
}

View File

@ -0,0 +1,515 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var TAG_PARTICLE_SYSTEM = 3;
var TAG_LABEL_ATLAS = 4;
var MAX_PARTICLES = 1000;
var PARTICLE_NODES_INCREASE = 50;
var s_nParCurIdx = 0;
var TAG_PARTICLE_MENU_LAYER = 1000;
////////////////////////////////////////////////////////
//
// ParticleMenuLayer
//
////////////////////////////////////////////////////////
var ParticleMenuLayer = PerformBasicLayer.extend({
_maxCases:4,
showCurrentTest:function () {
var scene = this.getParent();
var subTest = scene.getSubTestNum();
var parNum = scene.getParticlesNum();
var newScene = null;
switch (this._curCase) {
case 0:
newScene = new ParticlePerformTest1;
break;
case 1:
newScene = new ParticlePerformTest2;
break;
case 2:
newScene = new ParticlePerformTest3;
break;
case 3:
newScene = new ParticlePerformTest4;
break;
}
s_nParCurIdx = this._curCase;
if (newScene) {
newScene.initWithSubTest(subTest, parNum);
cc.Director.getInstance().replaceScene(newScene);
}
}
});
////////////////////////////////////////////////////////
//
// ParticleMainScene
//
////////////////////////////////////////////////////////
var ParticleMainScene = cc.Scene.extend({
_lastRenderedCount:null,
_quantityParticles:null,
_subtestNumber:null,
initWithSubTest:function (asubtest, particles) {
//srandom(0);
this._subtestNumber = asubtest;
var s = cc.Director.getInstance().getWinSize();
this._lastRenderedCount = 0;
this._quantityParticles = particles;
cc.MenuItemFont.setFontSize(65);
var decrease = cc.MenuItemFont.create(" - ", this, this.onDecrease);
decrease.setColor(cc.c3b(0, 200, 20));
var increase = cc.MenuItemFont.create(" + ", this, this.onIncrease);
increase.setColor(cc.c3b(0, 200, 20));
var menu = cc.Menu.create(decrease, increase, null);
menu.alignItemsHorizontally();
menu.setPosition(cc.p(s.width / 2, s.height / 2 + 15));
this.addChild(menu, 1);
var infoLabel = cc.LabelTTF.create("0 nodes", "Marker Felt", 30);
infoLabel.setColor(cc.c3b(0, 200, 20));
infoLabel.setPosition(cc.p(s.width / 2, s.height - 90));
this.addChild(infoLabel, 1, TAG_INFO_LAYER);
// particles on stage
//var labelAtlas = cc.LabelAtlas.create("0000", "res/Images/fps_images.png", 16, 24, '.');
var labelAtlas = cc.LabelTTF.create("0000", "Marker Felt", 30);
this.addChild(labelAtlas, 0, TAG_LABEL_ATLAS);
labelAtlas.setPosition(cc.p(s.width - 66, 50));
// Next Prev Test
var menu = new ParticleMenuLayer(true, 4, s_nParCurIdx);
this.addChild(menu, 1, TAG_PARTICLE_MENU_LAYER);
// Sub Tests
cc.MenuItemFont.setFontSize(40);
var subMenu = cc.Menu.create(null);
for (var i = 1; i <= 3; ++i) {
var str = i.toString();
var itemFont = cc.MenuItemFont.create(str, this, this.testNCallback);
itemFont.setTag(i);
subMenu.addChild(itemFont, 10);
if (i <= 1) {
itemFont.setColor(cc.c3b(200, 20, 20));
}
else {
itemFont.setColor(cc.c3b(0, 200, 20));
}
}
subMenu.alignItemsHorizontally();
subMenu.setPosition(cc.p(s.width / 2, 80));
this.addChild(subMenu, 2);
var label = cc.LabelTTF.create(this.title(), "Arial", 40);
this.addChild(label, 1);
label.setPosition(cc.p(s.width / 2, s.height - 32));
label.setColor(cc.c3b(255, 255, 40));
this.updateQuantityLabel();
this.createParticleSystem();
this.schedule(this.step);
},
title:function () {
return "No title";
},
step:function (dt) {
var atlas = this.getChildByTag(TAG_LABEL_ATLAS);
var emitter = this.getChildByTag(TAG_PARTICLE_SYSTEM);
var str = emitter.getParticleCount();
atlas.setString(str);
},
createParticleSystem:function () {
var particleSystem = null;
/*
* Tests:
* 1 Quad Particle System using 32-bit textures (PNG)
* 2: Quad Particle System using 16-bit textures (PNG)
* 3: Quad Particle System using 8-bit textures (PNG)
* 4: Quad Particle System using 4-bit textures (PVRTC)
*/
this.removeChildByTag(TAG_PARTICLE_SYSTEM, true);
//todo
// remove the "fire.png" from the TextureCache cache.
var texture = cc.TextureCache.getInstance().addImage("res/Images/fire.png");
cc.TextureCache.getInstance().removeTexture(texture);
particleSystem = new cc.ParticleSystemQuad();
switch (this._subtestNumber) {
case 1:
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_RGBA8888);
particleSystem.initWithTotalParticles(this._quantityParticles);
particleSystem.setTexture(cc.TextureCache.getInstance().addImage("res/Images/fire.png"));
break;
case 2:
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_RGBA4444);
particleSystem.initWithTotalParticles(this._quantityParticles);
particleSystem.setTexture(cc.TextureCache.getInstance().addImage("res/Images/fire.png"));
break;
case 3:
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_A8);
particleSystem.initWithTotalParticles(this._quantityParticles);
particleSystem.setTexture(cc.TextureCache.getInstance().addImage("res/Images/fire.png"));
break;
default:
particleSystem = null;
cc.log("Shall not happen!");
break;
}
this.addChild(particleSystem, 0, TAG_PARTICLE_SYSTEM);
this.doTest();
// restore the default pixel format
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_RGBA8888);
},
onDecrease:function (sender) {
this._quantityParticles -= PARTICLE_NODES_INCREASE;
if (this._quantityParticles < 0)
this._quantityParticles = 0;
this.updateQuantityLabel();
this.createParticleSystem();
},
onIncrease:function (sender) {
this._quantityParticles += PARTICLE_NODES_INCREASE;
if (this._quantityParticles > MAX_PARTICLES) {
this._quantityParticles = MAX_PARTICLES;
}
this.updateQuantityLabel();
this.createParticleSystem();
},
testNCallback:function (sender) {
this._subtestNumber = sender.getTag();
var menu = this.getChildByTag(TAG_PARTICLE_MENU_LAYER);
menu.restartCallback(sender);
},
updateQuantityLabel:function () {
if (this._quantityParticles != this._lastRenderedCount) {
var infoLabel = this.getChildByTag(TAG_INFO_LAYER);
var str = this._quantityParticles + " particles";
infoLabel.setString(str);
this._lastRenderedCount = this._quantityParticles;
}
},
getSubTestNum:function () {
return this._subtestNumber;
},
getParticlesNum:function () {
return this._quantityParticles;
},
doTest:function () {
}
});
////////////////////////////////////////////////////////
//
// ParticlePerformTest1
//
////////////////////////////////////////////////////////
var ParticlePerformTest1 = ParticleMainScene.extend({
title:function () {
return "A " + this._subtestNumber + " size=4";
},
doTest:function () {
var s = cc.Director.getInstance().getWinSize();
var particleSystem = this.getChildByTag(TAG_PARTICLE_SYSTEM);
// duration
particleSystem.setDuration(-1);
// gravity
particleSystem.setGravity(cc.p(0, -90));
// angle
particleSystem.setAngle(90);
particleSystem.setAngleVar(0);
// radial
particleSystem.setRadialAccel(0);
particleSystem.setRadialAccelVar(0);
// speed of particles
particleSystem.setSpeed(180);
particleSystem.setSpeedVar(50);
// emitter position
particleSystem.setPosition(cc.p(s.width / 2, 100));
particleSystem.setPosVar(cc.p(s.width / 2, 0));
// life of particles
particleSystem.setLife(2.0);
particleSystem.setLifeVar(1);
// emits per frame
particleSystem.setEmissionRate(particleSystem.getTotalParticles() / particleSystem.getLife());
// color of particles
var startColor = new cc.Color4F(0.5, 0.5, 0.5, 1.0);
particleSystem.setStartColor(startColor);
var startColorVar = new cc.Color4F(0.5, 0.5, 0.5, 1.0);
particleSystem.setStartColorVar(startColorVar);
var endColor = new cc.Color4F(0.1, 0.1, 0.1, 0.2);
particleSystem.setEndColor(endColor);
var endColorVar = new cc.Color4F(0.1, 0.1, 0.1, 0.2);
particleSystem.setEndColorVar(endColorVar);
// size, in pixels
particleSystem.setEndSize(4.0);
particleSystem.setStartSize(4.0);
particleSystem.setEndSizeVar(0);
particleSystem.setStartSizeVar(0);
// additive
particleSystem.setBlendAdditive(false);
}
});
////////////////////////////////////////////////////////
//
// ParticlePerformTest2
//
////////////////////////////////////////////////////////
var ParticlePerformTest2 = ParticleMainScene.extend({
title:function () {
return "B " + this._subtestNumber + " size=8";
},
doTest:function () {
var s = cc.Director.getInstance().getWinSize();
var particleSystem = this.getChildByTag(TAG_PARTICLE_SYSTEM);
// duration
particleSystem.setDuration(-1);
// gravity
particleSystem.setGravity(cc.p(0, -90));
// angle
particleSystem.setAngle(90);
particleSystem.setAngleVar(0);
// radial
particleSystem.setRadialAccel(0);
particleSystem.setRadialAccelVar(0);
// speed of particles
particleSystem.setSpeed(180);
particleSystem.setSpeedVar(50);
// emitter position
particleSystem.setPosition(cc.p(s.width / 2, 100));
particleSystem.setPosVar(cc.p(s.width / 2, 0));
// life of particles
particleSystem.setLife(2.0);
particleSystem.setLifeVar(1);
// emits per frame
particleSystem.setEmissionRate(particleSystem.getTotalParticles() / particleSystem.getLife());
// color of particles
var startColor = new cc.Color4F(0.5, 0.5, 0.5, 1.0);
particleSystem.setStartColor(startColor);
var startColorVar = new cc.Color4F(0.5, 0.5, 0.5, 1.0);
particleSystem.setStartColorVar(startColorVar);
var endColor = new cc.Color4F(0.1, 0.1, 0.1, 0.2);
particleSystem.setEndColor(endColor);
var endColorVar = new cc.Color4F(0.1, 0.1, 0.1, 0.2);
particleSystem.setEndColorVar(endColorVar);
// size, in pixels
particleSystem.setEndSize(8.0);
particleSystem.setStartSize(8.0);
particleSystem.setEndSizeVar(0);
particleSystem.setStartSizeVar(0);
// additive
particleSystem.setBlendAdditive(false);
}
});
////////////////////////////////////////////////////////
//
// ParticlePerformTest3
//
////////////////////////////////////////////////////////
var ParticlePerformTest3 = ParticleMainScene.extend({
title:function () {
return "C " + this._subtestNumber + " size=32";
},
doTest:function () {
var s = cc.Director.getInstance().getWinSize();
var particleSystem = this.getChildByTag(TAG_PARTICLE_SYSTEM);
// duration
particleSystem.setDuration(-1);
// gravity
particleSystem.setGravity(cc.p(0, -90));
// angle
particleSystem.setAngle(90);
particleSystem.setAngleVar(0);
// radial
particleSystem.setRadialAccel(0);
particleSystem.setRadialAccelVar(0);
// speed of particles
particleSystem.setSpeed(180);
particleSystem.setSpeedVar(50);
// emitter position
particleSystem.setPosition(cc.p(s.width / 2, 100));
particleSystem.setPosVar(cc.p(s.width / 2, 0));
// life of particles
particleSystem.setLife(2.0);
particleSystem.setLifeVar(1);
// emits per frame
particleSystem.setEmissionRate(particleSystem.getTotalParticles() / particleSystem.getLife());
// color of particles
var startColor = new cc.Color4F(0.5, 0.5, 0.5, 1.0);
particleSystem.setStartColor(startColor);
var startColorVar = new cc.Color4F(0.5, 0.5, 0.5, 1.0);
particleSystem.setStartColorVar(startColorVar);
var endColor = new cc.Color4F(0.1, 0.1, 0.1, 0.2);
particleSystem.setEndColor(endColor);
var endColorVar = new cc.Color4F(0.1, 0.1, 0.1, 0.2);
particleSystem.setEndColorVar(endColorVar);
// size, in pixels
particleSystem.setEndSize(32.0);
particleSystem.setStartSize(32.0);
particleSystem.setEndSizeVar(0);
particleSystem.setStartSizeVar(0);
// additive
particleSystem.setBlendAdditive(false);
}
});
////////////////////////////////////////////////////////
//
// ParticlePerformTest4
//
////////////////////////////////////////////////////////
var ParticlePerformTest4 = ParticleMainScene.extend({
title:function () {
return "D " + this._subtestNumber + " size=64";
},
doTest:function () {
var s = cc.Director.getInstance().getWinSize();
var particleSystem = this.getChildByTag(TAG_PARTICLE_SYSTEM);
// duration
particleSystem.setDuration(-1);
// gravity
particleSystem.setGravity(cc.p(0, -90));
// angle
particleSystem.setAngle(90);
particleSystem.setAngleVar(0);
// radial
particleSystem.setRadialAccel(0);
particleSystem.setRadialAccelVar(0);
// speed of particles
particleSystem.setSpeed(180);
particleSystem.setSpeedVar(50);
// emitter position
particleSystem.setPosition(cc.p(s.width / 2, 100));
particleSystem.setPosVar(cc.p(s.width / 2, 0));
// life of particles
particleSystem.setLife(2.0);
particleSystem.setLifeVar(1);
// emits per frame
particleSystem.setEmissionRate(particleSystem.getTotalParticles() / particleSystem.getLife());
// color of particles
var startColor = new cc.Color4F(0.5, 0.5, 0.5, 1.0);
particleSystem.setStartColor(startColor);
var startColorVar = new cc.Color4F(0.5, 0.5, 0.5, 1.0);
particleSystem.setStartColorVar(startColorVar);
var endColor = new cc.Color4F(0.1, 0.1, 0.1, 0.2);
particleSystem.setEndColor(endColor);
var endColorVar = new cc.Color4F(0.1, 0.1, 0.1, 0.2);
particleSystem.setEndColorVar(endColorVar);
// size, in pixels
particleSystem.setEndSize(64.0);
particleSystem.setStartSize(64.0);
particleSystem.setEndSizeVar(0);
particleSystem.setStartSizeVar(0);
// additive
particleSystem.setBlendAdditive(false);
}
});
function runParticleTest() {
var scene = new ParticlePerformTest1;
scene.initWithSubTest(1, PARTICLE_NODES_INCREASE);
cc.Director.getInstance().replaceScene(scene);
}

View File

@ -0,0 +1,560 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var MAX_SPRITES = 1000;
var SPRITES_INCREASE = 50;
var TAG_INFO_LAYER = 1;
var TAG_MAIN_LAYER = 2;
var TAG_SPRITE_MENU_LAYER = (MAX_SPRITES + 1000);
var s_nSpriteCurCase = 0;
////////////////////////////////////////////////////////
//
// SubTest
//
////////////////////////////////////////////////////////
var SubTest = cc.Class.extend({
_subtestNumber:null,
_batchNode:null,
_parent:null,
removeByTag:function (tag) {
switch (this._subtestNumber) {
case 1:
case 4:
case 7:
this._parent.removeChildByTag(tag + 100, true);
break;
case 2:
case 3:
case 5:
case 6:
case 8:
case 9:
this._batchNode.removeChildAtIndex(tag, true);
break;
default:
break;
}
},
createSpriteWithTag:function (tag) {
// create
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_RGBA8888);
var sprite = null;
switch (this._subtestNumber) {
case 1:
{
sprite = cc.Sprite.create("res/Images/grossinis_sister1.png");
this._parent.addChild(sprite, 0, tag + 100);
break;
}
case 2:
case 3:
{
sprite = cc.Sprite.createWithTexture(this._batchNode.getTexture(), cc.rect(0, 0, 52, 139));
this._batchNode.addChild(sprite, 0, tag + 100);
break;
}
case 4:
{
var idx = parseInt(Math.random() * 14) + 1;
idx = idx < 10 ? "0" + idx : idx.toString();
var str = "res/Images/grossini_dance_" + idx + ".png";
sprite = cc.Sprite.create(str);
this._parent.addChild(sprite, 0, tag + 100);
break;
}
case 5:
case 6:
{
var idx = 0 | (Math.random() * 14);
var x = (idx % 5) * 85;
var y = (0 | (idx / 5)) * 121;
sprite = cc.Sprite.createWithTexture(this._batchNode.getTexture(), cc.rect(x, y, 85, 121));
this._batchNode.addChild(sprite, 0, tag + 100);
break;
}
case 7:
{
var y, x;
var r = 0 | (Math.random() * 64);
y = parseInt(r / 8);
x = parseInt(r % 8);
var str = "res/Images/sprites_test/sprite-" + x + "-" + y + ".png";
sprite = cc.Sprite.create(str);
this._parent.addChild(sprite, 0, tag + 100);
break;
}
case 8:
case 9:
{
var y, x;
var r = 0 | (Math.random() * 64);
y = (0 | (r / 8)) * 32;
x = (r % 8) * 32;
sprite = cc.Sprite.createWithTexture(this._batchNode.getTexture(), cc.rect(x, y, 32, 32));
this._batchNode.addChild(sprite, 0, tag + 100);
break;
}
default:
break;
}
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_DEFAULT);
return sprite;
},
initWithSubTest:function (subTest, p) {
this._subtestNumber = subTest;
this._parent = p;
this._batchNode = null;
/*
* Tests:
* 1: 1 (32-bit) PNG sprite of 52 x 139
* 2: 1 (32-bit) PNG Batch Node using 1 sprite of 52 x 139
* 3: 1 (16-bit) PNG Batch Node using 1 sprite of 52 x 139
* 4: 1 (4-bit) PVRTC Batch Node using 1 sprite of 52 x 139
* 5: 14 (32-bit) PNG sprites of 85 x 121 each
* 6: 14 (32-bit) PNG Batch Node of 85 x 121 each
* 7: 14 (16-bit) PNG Batch Node of 85 x 121 each
* 8: 14 (4-bit) PVRTC Batch Node of 85 x 121 each
* 9: 64 (32-bit) sprites of 32 x 32 each
*10: 64 (32-bit) PNG Batch Node of 32 x 32 each
*11: 64 (16-bit) PNG Batch Node of 32 x 32 each
*12: 64 (4-bit) PVRTC Batch Node of 32 x 32 each
*/
// purge textures
var mgr = cc.TextureCache.getInstance();
// [mgr removeAllTextures];
mgr.removeTexture(mgr.addImage("res/Images/grossinis_sister1.png"));
mgr.removeTexture(mgr.addImage("res/Images/grossini_dance_atlas.png"));
mgr.removeTexture(mgr.addImage("res/Images/spritesheet1.png"));
switch (this._subtestNumber) {
case 1:
case 4:
case 7:
break;
///
case 2:
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_RGBA8888);
this._batchNode = cc.SpriteBatchNode.create("res/Images/grossinis_sister1.png", 100);
p.addChild(this._batchNode, 0);
break;
case 3:
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_RGBA4444);
this._batchNode = cc.SpriteBatchNode.create("res/Images/grossinis_sister1.png", 100);
p.addChild(this._batchNode, 0);
break;
///
case 5:
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_RGBA8888);
this._batchNode = cc.SpriteBatchNode.create("res/Images/grossini_dance_atlas.png", 100);
p.addChild(this._batchNode, 0);
break;
case 6:
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_RGBA4444);
this._batchNode = cc.SpriteBatchNode.create("res/Images/grossini_dance_atlas.png", 100);
p.addChild(this._batchNode, 0);
break;
///
case 8:
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_RGBA8888);
this._batchNode = cc.SpriteBatchNode.create("res/Images/spritesheet1.png", 100);
p.addChild(this._batchNode, 0);
break;
case 9:
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_RGBA4444);
this._batchNode = cc.SpriteBatchNode.create("res/Images/spritesheet1.png", 100);
p.addChild(this._batchNode, 0);
break;
default:
break;
}
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_DEFAULT);
}
});
////////////////////////////////////////////////////////
//
// SpriteMenuLayer
//
////////////////////////////////////////////////////////
var SpriteMenuLayer = PerformBasicLayer.extend({
_maxCases:7,
showCurrentTest:function () {
var scene = null;
var preScene = this.getParent();
var subTest = preScene.getSubTestNum();
var nodes = preScene.getNodesNum();
switch (this._curCase) {
case 0:
scene = new SpritePerformTest1();
break;
case 1:
scene = new SpritePerformTest2();
break;
case 2:
scene = new SpritePerformTest3();
break;
case 3:
scene = new SpritePerformTest4();
break;
case 4:
scene = new SpritePerformTest5();
break;
case 5:
scene = new SpritePerformTest6();
break;
case 6:
scene = new SpritePerformTest7();
break;
}
s_nSpriteCurCase = this._curCase;
if (scene) {
scene.initWithSubTest(subTest, nodes);
cc.Director.getInstance().replaceScene(scene);
}
}
});
////////////////////////////////////////////////////////
//
// SpriteMainScene
//
////////////////////////////////////////////////////////
var SpriteMainScene = cc.Scene.extend({
_lastRenderedCount:null,
_quantityNodes:null,
_subTest:null,
_subtestNumber:1,
title:function () {
return "No title";
},
initWithSubTest:function (asubtest, nodes) {
this._subtestNumber = asubtest;
this._subTest = new SubTest();
this._subTest.initWithSubTest(asubtest, this);
var s = cc.Director.getInstance().getWinSize();
this._lastRenderedCount = 0;
this._quantityNodes = 0;
// add title label
var label = cc.LabelTTF.create(this.title(), "Arial", 40);
this.addChild(label, 1);
label.setPosition(cc.p(s.width / 2, s.height - 32));
label.setColor(cc.c3b(255, 255, 40));
cc.MenuItemFont.setFontSize(65);
var decrease = cc.MenuItemFont.create(" - ", this, this.onDecrease);
decrease.setColor(cc.c3b(0, 200, 20));
var increase = cc.MenuItemFont.create(" + ", this, this.onIncrease);
increase.setColor(cc.c3b(0, 200, 20));
var menu = cc.Menu.create(decrease, increase, null);
menu.alignItemsHorizontally();
menu.setPosition(cc.p(s.width / 2, s.height - 65));
this.addChild(menu, 1);
var infoLabel = cc.LabelTTF.create("0 nodes", "Marker Felt", 30);
infoLabel.setColor(cc.c3b(0, 200, 20));
infoLabel.setPosition(cc.p(s.width / 2, s.height - 90));
this.addChild(infoLabel, 1, TAG_INFO_LAYER);
// add menu
var menu = new SpriteMenuLayer(true, 7, s_nSpriteCurCase);
this.addChild(menu, 1, TAG_SPRITE_MENU_LAYER);
// Sub Tests
cc.MenuItemFont.setFontSize(32);
var subMenu = cc.Menu.create(null);
for (var i = 1; i <= 9; ++i) {
var text = i.toString();
var itemFont = cc.MenuItemFont.create(text, this, this.testNCallback);
itemFont.setTag(i);
subMenu.addChild(itemFont, 10);
if (i <= 3)
itemFont.setColor(cc.c3b(200, 20, 20));
else if (i <= 6)
itemFont.setColor(cc.c3b(0, 200, 20));
else
itemFont.setColor(cc.c3b(0, 20, 200));
}
subMenu.alignItemsHorizontally();
subMenu.setPosition(cc.p(s.width / 2, 80));
this.addChild(subMenu, 2);
while (this._quantityNodes < nodes) {
this.onIncrease(this);
}
},
updateNodes:function () {
if (this._quantityNodes != this._lastRenderedCount) {
var infoLabel = this.getChildByTag(TAG_INFO_LAYER);
var str = this._quantityNodes + " nodes";
infoLabel.setString(str);
this._lastRenderedCount = this._quantityNodes;
}
},
testNCallback:function (sender) {
this._subtestNumber = sender.getTag();
var menu = this.getChildByTag(TAG_SPRITE_MENU_LAYER);
menu.restartCallback(sender);
},
onIncrease:function (sender) {
if (this._quantityNodes >= MAX_SPRITES)
return;
for (var i = 0; i < SPRITES_INCREASE; i++) {
var sprite = this._subTest.createSpriteWithTag(this._quantityNodes);
this.doTest(sprite);
this._quantityNodes++;
}
this.updateNodes();
},
onDecrease:function (sender) {
if (this._quantityNodes <= 0)
return;
for (var i = 0; i < SPRITES_INCREASE; i++) {
this._quantityNodes--;
this._subTest.removeByTag(this._quantityNodes);
}
this.updateNodes();
},
doTest:function (sprite) {
},
getSubTestNum:function () {
return this._subtestNumber
},
getNodesNum:function () {
return this._quantityNodes
}
});
////////////////////////////////////////////////////////
//
// For test functions
//
////////////////////////////////////////////////////////
function performanceActions(sprite) {
var size = cc.Director.getInstance().getWinSize();
sprite.setPosition(cc.p(parseInt(Math.random() * size.width), parseInt(Math.random() * size.height)));
var period = 0.5 + (Math.random() * 1000) / 500.0;
var rot = cc.RotateBy.create(period, 360.0 * Math.random());
var rot_back = rot.reverse();
var permanentRotation = cc.RepeatForever.create(cc.Sequence.create(rot, rot_back, null));
sprite.runAction(permanentRotation);
var growDuration = 0.5 + (Math.random() * 1000) / 500.0;
var grow = cc.ScaleBy.create(growDuration, 0.5, 0.5);
var permanentScaleLoop = cc.RepeatForever.create(cc.Sequence._actionOneTwo(grow, grow.reverse()));
sprite.runAction(permanentScaleLoop);
}
function performanceActions20(sprite) {
var size = cc.Director.getInstance().getWinSize();
if (Math.random() < 0.2)
sprite.setPosition(cc.p(parseInt(Math.random() * size.width), parseInt(Math.random() * size.height)));
else
sprite.setPosition(cc.p(-1000, -1000));
var period = 0.5 + (Math.random() * 1000) / 500.0;
var rot = cc.RotateBy.create(period, 360.0 * Math.random());
var rot_back = rot.reverse();
var permanentRotation = cc.RepeatForever.create(cc.Sequence.create(rot, rot_back, null));
sprite.runAction(permanentRotation);
var growDuration = 0.5 + (Math.random() * 1000) / 500.0;
var grow = cc.ScaleBy.create(growDuration, 0.5, 0.5);
var permanentScaleLoop = cc.RepeatForever.create(cc.Sequence._actionOneTwo(grow, grow.reverse()));
sprite.runAction(permanentScaleLoop);
}
function performanceRotationScale(sprite) {
var size = cc.Director.getInstance().getWinSize();
sprite.setPosition(cc.p(parseInt(Math.random() * size.width), parseInt(Math.random() * size.height)));
sprite.setRotation(Math.random() * 360);
sprite.setScale(Math.random() * 2);
}
function performancePosition(sprite) {
var size = cc.Director.getInstance().getWinSize();
sprite.setPosition(cc.p(parseInt(Math.random() * size.width), parseInt(Math.random() * size.height)));
}
function performanceout20(sprite) {
var size = cc.Director.getInstance().getWinSize();
if (Math.random() < 0.2)
sprite.setPosition(cc.p(parseInt(Math.random() * size.width), parseInt(Math.random() * size.height)));
else
sprite.setPosition(cc.p(-1000, -1000));
}
function performanceOut100(sprite) {
sprite.setPosition(cc.p(-1000, -1000));
}
function performanceScale(sprite) {
var size = cc.Director.getInstance().getWinSize();
sprite.setPosition(cc.p(parseInt(Math.random() * size.width), parseInt(Math.random() * size.height)));
sprite.setScale(Math.random() * 100 / 50);
}
////////////////////////////////////////////////////////
//
// SpritePerformTest1
//
////////////////////////////////////////////////////////
var SpritePerformTest1 = SpriteMainScene.extend({
doTest:function (sprite) {
performancePosition(sprite);
},
title:function () {
return "A (" + this._subtestNumber + ") position";
}
});
////////////////////////////////////////////////////////
//
// SpritePerformTest2
//
////////////////////////////////////////////////////////
var SpritePerformTest2 = SpriteMainScene.extend({
doTest:function (sprite) {
performanceScale(sprite);
},
title:function () {
return "B (" + this._subtestNumber + ") scale";
}
});
////////////////////////////////////////////////////////
//
// SpritePerformTest3
//
////////////////////////////////////////////////////////
var SpritePerformTest3 = SpriteMainScene.extend({
doTest:function (sprite) {
performanceRotationScale(sprite);
},
title:function () {
return "C (" + this._subtestNumber + ") scale + rot";
}
});
////////////////////////////////////////////////////////
//
// SpritePerformTest4
//
////////////////////////////////////////////////////////
var SpritePerformTest4 = SpriteMainScene.extend({
doTest:function (sprite) {
performanceOut100(sprite);
},
title:function () {
return "D (" + this._subtestNumber + ") 100% out";
}
});
////////////////////////////////////////////////////////
//
// SpritePerformTest5
//
////////////////////////////////////////////////////////
var SpritePerformTest5 = SpriteMainScene.extend({
doTest:function (sprite) {
performanceout20(sprite);
},
title:function () {
return "E (" + this._subtestNumber + ") 80% out";
}
});
////////////////////////////////////////////////////////
//
// SpritePerformTest6
//
////////////////////////////////////////////////////////
var SpritePerformTest6 = SpriteMainScene.extend({
doTest:function (sprite) {
performanceActions(sprite);
},
title:function () {
return "F (" + this._subtestNumber + ") actions";
}
});
////////////////////////////////////////////////////////
//
// SpritePerformTest7
//
////////////////////////////////////////////////////////
var SpritePerformTest7 = SpriteMainScene.extend({
doTest:function (sprite) {
performanceActions20(sprite);
},
title:function () {
return "G (" + this._subtestNumber + ") actions 80% out";
}
});
function runSpriteTest() {
var scene = new SpritePerformTest1;
scene.initWithSubTest(1, 50);
cc.Director.getInstance().replaceScene(scene);
}

View File

@ -0,0 +1,160 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var ITEM_TAG_BASIC = 1000;
var nCurCase = 0;
var PerformanceTests = [
"PerformanceNodeChildrenTest",
"PerformanceParticleTest",
"PerformanceSpriteTest",
"PerformanceTextureTest",
"PerformanceTouchesTest"
];
////////////////////////////////////////////////////////
//
// PerformanceMainLayer
//
////////////////////////////////////////////////////////
var PerformanceMainLayer = cc.Layer.extend({
onEnter:function () {
this._super();
var s = cc.Director.getInstance().getWinSize();
var menu = cc.Menu.create(null);
menu.setPosition(cc.p(0,0));
cc.MenuItemFont.setFontName("Arial");
cc.MenuItemFont.setFontSize(24);
for (var i = 0; i < PerformanceTests.length; i++) {
var pItem = cc.MenuItemFont.create(PerformanceTests[i], this, this.menuCallback);
pItem.setPosition(cc.p(s.width / 2, s.height - (i + 1) * LINE_SPACE));
menu.addChild(pItem, ITEM_TAG_BASIC + i);
}
this.addChild(menu);
},
menuCallback:function (sender) {
var index = sender.getZOrder() - ITEM_TAG_BASIC;
// create the test scene and run it
switch (index) {
case 0:
runNodeChildrenTest();
break;
case 1:
runParticleTest();
break;
case 2:
runSpriteTest();
break;
case 3:
runTextureTest();
break;
case 4:
runTouchesTest();
break;
default:
break;
}
}
});
////////////////////////////////////////////////////////
//
// PerformBasicLayer
//
////////////////////////////////////////////////////////
var PerformBasicLayer = cc.Layer.extend({
_controlMenuVisible:true,
_maxCases:1,
_curCase:0,
ctor:function () {
this._curCase = nCurCase;
},
onEnter:function () {
this._super();
var s = cc.Director.getInstance().getWinSize();
cc.MenuItemFont.setFontName("Arial");
cc.MenuItemFont.setFontSize(24);
var mainItem = cc.MenuItemFont.create("Back", this, this.toMainLayer);
mainItem.setPosition(cc.p(s.width - 50, 25));
var menu = cc.Menu.create(mainItem, null);
menu.setPosition(cc.p(0,0));
if (this._controlMenuVisible) {
var item1 = cc.MenuItemImage.create(s_pathB1, s_pathB2, this, this.backCallback);
var item2 = cc.MenuItemImage.create(s_pathR1, s_pathR2, this, this.restartCallback);
var item3 = cc.MenuItemImage.create(s_pathF1, s_pathF2, this, this.nextCallback);
item1.setPosition(cc.p(s.width / 2 - 100, 30));
item2.setPosition(cc.p(s.width / 2, 30));
item3.setPosition(cc.p(s.width / 2 + 100, 30));
menu.addChild(item1, ITEM_TAG_BASIC);
menu.addChild(item2, ITEM_TAG_BASIC);
menu.addChild(item3, ITEM_TAG_BASIC);
}
this.addChild(menu);
},
restartCallback:function (sender) {
this.showCurrentTest();
},
nextCallback:function (sender) {
this._curCase++;
this._curCase = this._curCase % this._maxCases;
nCurCase = this._curCase;
this.showCurrentTest();
},
backCallback:function (sender) {
this._curCase--;
if (this._curCase < 0) {
this._curCase += this._maxCases;
}
nCurCase = this._curCase;
this.showCurrentTest();
},
showCurrentTest:function (sender) {
},
toMainLayer:function (sender) {
var scene = new PerformanceTestScene();
scene.runThisTest();
}
});
////////////////////////////////////////////////////////
//
// PerformanceTestScene
//
////////////////////////////////////////////////////////
var PerformanceTestScene = TestScene.extend({
runThisTest:function () {
var layer = new PerformanceMainLayer();
this.addChild(layer);
cc.Director.getInstance().replaceScene(this);
}
});

View File

@ -0,0 +1,171 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var s_nTexCurCase = 0;
////////////////////////////////////////////////////////
//
// TextureMenuLayer
//
////////////////////////////////////////////////////////
var TextureMenuLayer = PerformBasicLayer.extend({
showCurrentTest:function () {
var scene = null;
switch (this._curCase) {
case 0:
scene = TextureTest.scene();
break;
}
s_nTexCurCase = this._curCase;
if (scene) {
cc.Director.getInstance().replaceScene(scene);
}
},
onEnter:function () {
this._super();
var s = cc.Director.getInstance().getWinSize();
// Title
var label = cc.LabelTTF.create(this.title(), "Arial", 40);
this.addChild(label, 1);
label.setPosition(cc.p(s.width / 2, s.height - 32));
label.setColor(cc.c3b(255, 255, 40));
// Subtitle
var strSubTitle = this.subtitle();
if (strSubTitle.length) {
var l = cc.LabelTTF.create(strSubTitle, "Thonburi", 16);
this.addChild(l, 1);
l.setPosition(cc.p(s.width / 2, s.height - 80));
}
this.performTests();
},
title:function () {
return "no title";
},
subtitle:function () {
return "no subtitle";
},
performTests:function () {
}
})
////////////////////////////////////////////////////////
//
// TextureTest
//
////////////////////////////////////////////////////////
var TextureTest = TextureMenuLayer.extend({
performTests:function () {
cc.log("--------");
cc.log("--- PNG 128x128 ---");
this.performTestsPNG("res/Images/test_image.png");
cc.log("--- PNG 512x512 ---");
this.performTestsPNG("res/Images/texture512x512.png");
cc.log("EMPTY IMAGE");
cc.log("--- PNG 1024x1024 ---");
this.performTestsPNG("res/Images/texture1024x1024.png");
cc.log("LANDSCAPE IMAGE");
cc.log("--- PNG 1024x1024 ---");
this.performTestsPNG("res/Images/landscape-1024x1024.png");
},
title:function () {
return "Texture Performance Test";
},
subtitle:function () {
return "See console for results";
},
performTestsPNG:function (filename) {
var now = cc.timeval();
var texture;
var cache = cc.TextureCache.getInstance();
cc.log("RGBA 8888");
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_RGBA8888);
var now = cc.Time.gettimeofdayCocos2d();
texture = cache.addImage(filename);
if (texture)
cc.log(" ms:" + calculateDeltaTime(now));
else
cc.log(" ERROR");
cache.removeTexture(texture);
cc.log("RGBA 4444");
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_RGBA4444);
var now = cc.Time.gettimeofdayCocos2d();
texture = cache.addImage(filename);
if (texture)
cc.log(" ms:" + calculateDeltaTime(now));
else
cc.log(" ERROR");
cache.removeTexture(texture);
cc.log("RGBA 5551");
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_RGB5A1);
var now = cc.Time.gettimeofdayCocos2d();
texture = cache.addImage(filename);
if (texture)
cc.log(" ms:" + calculateDeltaTime(now));
else
cc.log(" ERROR");
cache.removeTexture(texture);
cc.log("RGB 565");
cc.Texture2D.setDefaultAlphaPixelFormat(cc.TEXTURE_2D_PIXEL_FORMAT_RGB565);
var now = cc.Time.gettimeofdayCocos2d();
texture = cache.addImage(filename);
if (texture)
cc.log(" ms:" + calculateDeltaTime(now));
else
cc.log(" ERROR");
cache.removeTexture(texture);
}
});
TextureTest.scene = function () {
var scene = cc.Scene.create();
var layer = new TextureTest(false, 1, s_nTexCurCase);
scene.addChild(layer);
return scene;
};
function runTextureTest() {
s_nTexCurCase = 0;
var scene = TextureTest.scene();
cc.Director.getInstance().replaceScene(scene);
}
function calculateDeltaTime(lastUpdate) {
var now = cc.Time.gettimeofdayCocos2d();
var dt = (now.tv_sec - lastUpdate.tv_sec) + (now.tv_usec - lastUpdate.tv_usec) / 1000000.0;
return dt;
}

View File

@ -0,0 +1,162 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var s_nTouchCurCase = 0;
var TouchesMainScene = PerformBasicLayer.extend({
_maxCases:2,
_plabel:null,
_numberOfTouchesB:0,
_numberOfTouchesM:0,
_numberOfTouchesE:0,
_numberOfTouchesC:0,
_elapsedTime:null,
showCurrentTest:function () {
var layer = null;
switch (this._curCase) {
case 0:
layer = new TouchesPerformTest1(true, 2, this._curCase);
break;
case 1:
layer = new TouchesPerformTest2(true, 2, this._curCase);
break;
}
s_nTouchCurCase = this._curCase;
if (layer) {
var scene = cc.Scene.create();
scene.addChild(layer);
cc.Director.getInstance().replaceScene(scene);
}
},
onEnter:function () {
this._super();
var s = cc.Director.getInstance().getWinSize();
// add title
var label = cc.LabelTTF.create(this.title(), "Arial", 32);
this.addChild(label, 1);
label.setPosition(cc.p(s.width / 2, s.height - 50));
this.scheduleUpdate();
this._plabel = cc.LabelTTF.create("00.0", "Arial", 16);
this._plabel.setPosition(cc.p(s.width / 2, s.height / 2));
this.addChild(this._plabel);
this._elapsedTime = 0;
this._numberOfTouchesB = this._numberOfTouchesM = this._numberOfTouchesE = this._numberOfTouchesC = 0;
},
title:function () {
return "No title";
},
update:function (dt) {
this._elapsedTime += dt;
if (this._elapsedTime > 1.0) {
var frameRateB = (this._numberOfTouchesB / this._elapsedTime).toFixed(1);
var frameRateM = (this._numberOfTouchesM / this._elapsedTime).toFixed(1);
var frameRateE = (this._numberOfTouchesE / this._elapsedTime).toFixed(1);
var frameRateC = (this._numberOfTouchesC / this._elapsedTime).toFixed(1);
this._elapsedTime = 0;
this._numberOfTouchesB = this._numberOfTouchesM = this._numberOfTouchesE = this._numberOfTouchesC = 0;
var str = frameRateB + " " + frameRateM + " " + frameRateE + " " + frameRateC;
this._plabel.setString(str);
}
}
});
////////////////////////////////////////////////////////
//
// TouchesPerformTest1
//
////////////////////////////////////////////////////////
var TouchesPerformTest1 = TouchesMainScene.extend({
onEnter:function () {
this._super();
this.setTouchEnabled(true);
},
title:function () {
return "Targeted touches";
},
registerWithTouchDispatcher:function () {
cc.Director.getInstance().getTouchDispatcher().addTargetedDelegate(this, 0, true);
},
onTouchBegan:function (touch, event) {
this._numberOfTouchesB++;
return true;
},
onTouchMoved:function (touch, event) {
this._numberOfTouchesM++;
},
onTouchEnded:function (touch, event) {
this._numberOfTouchesE++;
},
onTouchCancelled:function (touch, event) {
this._numberOfTouchesC++;
}
});
////////////////////////////////////////////////////////
//
// TouchesPerformTest2
//
////////////////////////////////////////////////////////
var TouchesPerformTest2 = TouchesMainScene.extend({
onEnter:function () {
this._super();
this.setTouchEnabled(true);
},
title:function () {
return "Standard touches";
},
registerWithTouchDispatcher:function () {
cc.Director.getInstance().getTouchDispatcher().addStandardDelegate(this, 0);
},
onTouchesBegan:function (touches, event) {
this._numberOfTouchesB += touches.length;
},
onTouchesMoved:function (touches, event) {
this._numberOfTouchesM += touches.length;
},
onTouchesEnded:function (touches, event) {
this._numberOfTouchesE += touches.length;
},
onTouchesCancelled:function (touches, event) {
this._numberOfTouchesC += touches.length;
}
});
function runTouchesTest() {
s_nTouchCurCase = 0;
var scene = cc.Scene.create();
var layer = new TouchesPerformTest1(true, 2, s_nTouchCurCase);
scene.addChild(layer);
cc.Director.getInstance().replaceScene(scene);
}

View File

@ -0,0 +1,419 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var sceneIdx_Progress = -1;
var MAX_LAYER_Progress = 7;
var nextProgressAction = function () {
sceneIdx_Progress++;
sceneIdx_Progress = sceneIdx_Progress % MAX_LAYER_Progress;
return createLayer(sceneIdx_Progress);
};
var backProgressAction = function () {
sceneIdx_Progress--;
if (sceneIdx_Progress < 0)
sceneIdx_Progress += MAX_LAYER_Progress;
return createLayer(sceneIdx_Progress);
};
var restartProgressAction = function () {
return createLayer(sceneIdx_Progress);
};
var createLayer = function (index) {
switch (index) {
case 0:
return new SpriteProgressToRadial();
case 1:
return new SpriteProgressToHorizontal();
case 2:
return new SpriteProgressToVertical();
case 3:
return new SpriteProgressToRadialMidpointChanged();
case 4:
return new SpriteProgressBarVarious();
case 5:
return new SpriteProgressBarTintAndFade();
case 6:
return new SpriteProgressWithSpriteFrame();
}
return null;
};
var SpriteDemo = cc.Layer.extend({
ctor:function () {
this._super();
},
title:function () {
return "ProgressActionsTest";
},
subtitle:function () {
return "";
},
onEnter:function () {
this._super();
var winSize = cc.Director.getInstance().getWinSize();
var label = cc.LabelTTF.create(this.title(), "Arial", 18);
this.addChild(label, 1);
label.setPosition(cc.p(winSize.width / 2, winSize.height - 50));
var strSubtitle = this.subtitle();
if (strSubtitle != "") {
var l = cc.LabelTTF.create(strSubtitle, "Thonburi", 22);
this.addChild(l, 1);
l.setPosition(cc.p(winSize.width / 2, winSize.height - 80));
}
var item1 = cc.MenuItemImage.create(s_pathB1, s_pathB2, this, this.backCallback);
var item2 = cc.MenuItemImage.create(s_pathR1, s_pathR2, this, this.restartCallback);
var item3 = cc.MenuItemImage.create(s_pathF1, s_pathF2, this, this.nextCallback);
var menu = cc.Menu.create(item1, item2, item3);
menu.setPosition(cc.p(0,0));
item1.setPosition(cc.p(winSize.width / 2 - item2.getContentSize().width * 2, item2.getContentSize().height / 2));
item2.setPosition(cc.p(winSize.width / 2, item2.getContentSize().height / 2));
item3.setPosition(cc.p(winSize.width / 2 + item2.getContentSize().width * 2, item2.getContentSize().height / 2));
this.addChild(menu, 1);
var background = cc.LayerColor.create(cc.c4b(0, 125, 0, 255));
this.addChild(background, -10);
},
restartCallback:function (sender) {
var scene = new ProgressActionsTestScene();
scene.addChild(restartProgressAction());
cc.Director.getInstance().replaceScene(scene);
},
nextCallback:function (sender) {
var scene = new ProgressActionsTestScene();
scene.addChild(nextProgressAction());
cc.Director.getInstance().replaceScene(scene);
},
backCallback:function (sender) {
var scene = new ProgressActionsTestScene();
scene.addChild(backProgressAction());
cc.Director.getInstance().replaceScene(scene);
}
});
var SpriteProgressToRadial = SpriteDemo.extend({
onEnter:function () {
this._super();
var winSize = cc.Director.getInstance().getWinSize();
var to1 = cc.ProgressTo.create(2, 100);
var to2 = cc.ProgressTo.create(2, 100);
var left = cc.ProgressTimer.create(cc.Sprite.create(s_pathSister1));
left.setType(cc.PROGRESS_TIMER_TYPE_RADIAL);
this.addChild(left);
left.setPosition(cc.p(200, winSize.height / 2));
left.runAction(cc.RepeatForever.create(to1));
var right = cc.ProgressTimer.create(cc.Sprite.create(s_pathBlock));
right.setType(cc.PROGRESS_TIMER_TYPE_RADIAL);
right.setReverseDirection(true);
this.addChild(right);
right.setPosition(cc.p(winSize.width - 200, winSize.height / 2));
right.runAction(cc.RepeatForever.create(to2));
},
subtitle:function () {
return "ProgressTo Radial";
}
});
var SpriteProgressToHorizontal = SpriteDemo.extend({
onEnter:function () {
this._super();
var winSize = cc.Director.getInstance().getWinSize();
var to1 = cc.ProgressTo.create(2, 100);
var to2 = cc.ProgressTo.create(2, 100);
var left = cc.ProgressTimer.create(cc.Sprite.create(s_pathSister1));
left.setType(cc.PROGRESS_TIMER_TYPE_BAR);
// Setup for a bar starting from the left since the midpoint is 0 for the x
left.setMidpoint(cc.p(0, 0));
// Setup for a horizontal bar since the bar change rate is 0 for y meaning no vertical change
left.setBarChangeRate(cc.p(1, 0));
this.addChild(left);
left.setPosition(cc.p(200, winSize.height / 2));
left.runAction(cc.RepeatForever.create(to1));
var right = cc.ProgressTimer.create(cc.Sprite.create(s_pathSister2));
right.setType(cc.PROGRESS_TIMER_TYPE_BAR);
// Setup for a bar starting from the left since the midpoint is 1 for the x
right.setMidpoint(cc.p(1, 0));
// Setup for a horizontal bar since the bar change rate is 0 for y meaning no vertical change
right.setBarChangeRate(cc.p(1, 0));
this.addChild(right);
right.setPosition(cc.p(winSize.width - 200, winSize.height / 2));
right.runAction(cc.RepeatForever.create(to2));
},
subtitle:function () {
return "ProgressTo Horizontal";
}
});
var SpriteProgressToVertical = SpriteDemo.extend({
onEnter:function () {
this._super();
var winSize = cc.Director.getInstance().getWinSize();
var to1 = cc.ProgressTo.create(2, 100);
var to2 = cc.ProgressTo.create(2, 100);
var left = cc.ProgressTimer.create(cc.Sprite.create(s_pathSister1));
left.setType(cc.PROGRESS_TIMER_TYPE_BAR);
// Setup for a bar starting from the bottom since the midpoint is 0 for the y
left.setMidpoint(cc.p(0, 0));
// Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change
left.setBarChangeRate(cc.p(0, 1));
this.addChild(left);
left.setPosition(cc.p(200, winSize.height / 2));
left.runAction(cc.RepeatForever.create(to1));
var right = cc.ProgressTimer.create(cc.Sprite.create(s_pathSister2));
right.setType(cc.PROGRESS_TIMER_TYPE_BAR);
// Setup for a bar starting from the bottom since the midpoint is 0 for the y
right.setMidpoint(cc.p(0, 1));
// Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change
right.setBarChangeRate(cc.p(0, 1));
this.addChild(right);
right.setPosition(cc.p(winSize.width - 200, winSize.height / 2));
right.runAction(cc.RepeatForever.create(to2));
},
subtitle:function () {
return "ProgressTo Vertical";
}
});
var SpriteProgressToRadialMidpointChanged = SpriteDemo.extend({
onEnter:function () {
this._super();
var winSize = cc.Director.getInstance().getWinSize();
var action = cc.ProgressTo.create(2, 100);
/**
* Our image on the left should be a radial progress indicator, clockwise
*/
var left = cc.ProgressTimer.create(cc.Sprite.create(s_pathBlock));
left.setType(cc.PROGRESS_TIMER_TYPE_RADIAL);
this.addChild(left);
left.setMidpoint(cc.p(0.25, 0.75));
left.setPosition(cc.p(200, winSize.height / 2));
left.runAction(cc.RepeatForever.create(action.copy()));
/**
* Our image on the left should be a radial progress indicator, counter clockwise
*/
var right = cc.ProgressTimer.create(cc.Sprite.create(s_pathBlock));
right.setType(cc.PROGRESS_TIMER_TYPE_RADIAL);
right.setMidpoint(cc.p(0.75, 0.25));
/**
* Note the reverse property (default=NO) is only added to the right image. That's how
* we get a counter clockwise progress.
*/
this.addChild(right);
right.setPosition(cc.p(winSize.width - 200, winSize.height / 2));
right.runAction(cc.RepeatForever.create(action.copy()));
},
subtitle:function () {
return "Radial w/ Different Midpoints";
}
});
var SpriteProgressBarVarious = SpriteDemo.extend({
onEnter:function () {
this._super();
var s = cc.Director.getInstance().getWinSize();
var to = cc.ProgressTo.create(2, 100);
var left = cc.ProgressTimer.create(cc.Sprite.create(s_pathSister1));
left.setType(cc.PROGRESS_TIMER_TYPE_BAR);
// Setup for a bar starting from the bottom since the midpoint is 0 for the y
left.setMidpoint(cc.p(0.5, 0.5));
// Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change
left.setBarChangeRate(cc.p(1, 0));
this.addChild(left);
left.setPosition(cc.p(150, s.height / 2));
left.runAction(cc.RepeatForever.create(to.copy()));
var middle = cc.ProgressTimer.create(cc.Sprite.create(s_pathSister2));
middle.setType(cc.PROGRESS_TIMER_TYPE_BAR);
// Setup for a bar starting from the bottom since the midpoint is 0 for the y
middle.setMidpoint(cc.p(0.5, 0.5));
// Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change
middle.setBarChangeRate(cc.p(1, 1));
this.addChild(middle);
middle.setPosition(cc.p(s.width / 2, s.height / 2));
middle.runAction(cc.RepeatForever.create(to.copy()));
var right = cc.ProgressTimer.create(cc.Sprite.create(s_pathSister2));
right.setType(cc.PROGRESS_TIMER_TYPE_BAR);
// Setup for a bar starting from the bottom since the midpoint is 0 for the y
right.setMidpoint(cc.p(0.5, 0.5));
// Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change
right.setBarChangeRate(cc.p(0, 1));
this.addChild(right);
right.setPosition(cc.p(s.width - 150, s.height / 2));
right.runAction(cc.RepeatForever.create(to.copy()));
},
subtitle:function () {
return "ProgressTo Bar Mid";
}
});
var SpriteProgressBarTintAndFade = SpriteDemo.extend({
onEnter:function () {
this._super();
var winSize = cc.Director.getInstance().getWinSize();
var to = cc.ProgressTo.create(6, 100);
var tint = cc.Sequence.create(cc.TintTo.create(1, 255, 0, 0),
cc.TintTo.create(1, 0, 255, 0),
cc.TintTo.create(1, 0, 0, 255));
var fade = cc.Sequence.create(cc.FadeTo.create(1.0, 0), cc.FadeTo.create(1.0, 255));
var left = cc.ProgressTimer.create(cc.Sprite.create(s_pathSister1));
left.setType(cc.PROGRESS_TIMER_TYPE_BAR);
// Setup for a bar starting from the bottom since the midpoint is 0 for the y
left.setMidpoint(cc.p(0.5, 0.5));
// Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change
left.setBarChangeRate(cc.p(1, 0));
this.addChild(left);
left.setPosition(cc.p(150, winSize.height / 2));
left.runAction(cc.RepeatForever.create(to.copy()));
left.runAction(cc.RepeatForever.create(tint.copy()));
left.addChild(cc.LabelTTF.create("Tint", "Marker Felt", 20.0));
var middle = cc.ProgressTimer.create(cc.Sprite.create(s_pathSister2));
middle.setType(cc.PROGRESS_TIMER_TYPE_BAR);
// Setup for a bar starting from the bottom since the midpoint is 0 for the y
middle.setMidpoint(cc.p(0.5, 0.5));
// Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change
middle.setBarChangeRate(cc.p(1, 1));
this.addChild(middle);
middle.setPosition(cc.p(winSize.width / 2, winSize.height / 2));
middle.runAction(cc.RepeatForever.create(to.copy()));
middle.runAction(cc.RepeatForever.create(fade.copy()));
middle.addChild(cc.LabelTTF.create("Fade", "Marker Felt", 20.0));
var right = cc.ProgressTimer.create(cc.Sprite.create(s_pathSister2));
right.setType(cc.PROGRESS_TIMER_TYPE_BAR);
// Setup for a bar starting from the bottom since the midpoint is 0 for the y
right.setMidpoint(cc.p(0.5, 0.5));
// Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change
right.setBarChangeRate(cc.p(0, 1));
this.addChild(right);
right.setPosition(cc.p(winSize.width - 150, winSize.height / 2));
right.runAction(cc.RepeatForever.create(to.copy()));
right.runAction(cc.RepeatForever.create(tint.copy()));
right.runAction(cc.RepeatForever.create(fade.copy()));
right.addChild(cc.LabelTTF.create("Tint and Fade", "Marker Felt", 20.0));
},
subtitle:function () {
return "ProgressTo Bar Mid";
}
});
var SpriteProgressWithSpriteFrame = SpriteDemo.extend({
onEnter:function () {
this._super();
var winSize = cc.Director.getInstance().getWinSize();
var to = cc.ProgressTo.create(6, 100);
cc.SpriteFrameCache.getInstance().addSpriteFrames(s_grossiniPlist);
var left = cc.ProgressTimer.create(cc.Sprite.createWithSpriteFrameName("grossini_dance_01.png"));
left.setType(cc.PROGRESS_TIMER_TYPE_BAR);
// Setup for a bar starting from the bottom since the midpoint is 0 for the y
left.setMidpoint(cc.p(0.5, 0.5));
// Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change
left.setBarChangeRate(cc.p(1, 0));
this.addChild(left);
left.setPosition(cc.p(150, winSize.height / 2));
left.runAction(cc.RepeatForever.create(to.copy()));
var middle = cc.ProgressTimer.create(cc.Sprite.createWithSpriteFrameName("grossini_dance_02.png"));
middle.setType(cc.PROGRESS_TIMER_TYPE_BAR);
// Setup for a bar starting from the bottom since the midpoint is 0 for the y
middle.setMidpoint(cc.p(0.5, 0.5));
// Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change
middle.setBarChangeRate(cc.p(1, 1));
this.addChild(middle);
middle.setPosition(cc.p(winSize.width / 2, winSize.height / 2));
middle.runAction(cc.RepeatForever.create(to.copy()));
var right = cc.ProgressTimer.create(cc.Sprite.createWithSpriteFrameName("grossini_dance_03.png"));
right.setType(cc.PROGRESS_TIMER_TYPE_RADIAL);
// Setup for a bar starting from the bottom since the midpoint is 0 for the y
right.setMidpoint(cc.p(0.5, 0.5));
// Setup for a vertical bar since the bar change rate is 0 for x meaning no horizontal change
right.setBarChangeRate(cc.p(0, 1));
this.addChild(right);
right.setPosition(cc.p(winSize.width - 150, winSize.height / 2));
right.runAction(cc.RepeatForever.create(to.copy()));
},
subtitle:function () {
return "Progress With Sprite Frame";
}
});
var ProgressActionsTestScene = TestScene.extend({
runThisTest:function () {
sceneIdx_Progress = -1;
MAX_LAYER_Progress = 7;
this.addChild(nextProgressAction());
cc.Director.getInstance().replaceScene(this);
}
});

View File

@ -0,0 +1,156 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var RotateWorldTestScene = TestScene.extend({
runThisTest:function () {
var layer = RotateWorldMainLayer.node();
this.addChild(layer);
this.runAction(cc.RotateBy.create(4, -360));
cc.Director.getInstance().replaceScene(this);
}
});
var SpriteLayer = cc.Layer.extend({
onEnter:function () {
this._super();
var x, y;
var size = cc.Director.getInstance().getWinSize();
x = size.width;
y = size.height;
var sprite = cc.Sprite.create(s_pathGrossini);
var spriteSister1 = cc.Sprite.create(s_pathSister1);
var spriteSister2 = cc.Sprite.create(s_pathSister2);
sprite.setScale(1.5);
spriteSister1.setScale(1.5);
spriteSister2.setScale(1.5);
sprite.setPosition(cc.p(x / 2, y / 2));
spriteSister1.setPosition(cc.p(40, y / 2));
spriteSister2.setPosition(cc.p(x - 40, y / 2));
var rot = cc.RotateBy.create(16, -3600);
this.addChild(sprite);
this.addChild(spriteSister1);
this.addChild(spriteSister2);
sprite.runAction(rot);
var jump1 = cc.JumpBy.create(4, cc.p(-400, 0), 100, 4);
var jump2 = jump1.reverse();
var rot1 = cc.RotateBy.create(4, 360 * 2);
var rot2 = rot1.reverse();
spriteSister1.runAction(cc.Repeat.create(cc.Sequence.create(jump2, jump1, null), 5));
spriteSister2.runAction(cc.Repeat.create(cc.Sequence.create(jump1.copy(), jump2.copy(), null), 5));
spriteSister1.runAction(cc.Repeat.create(cc.Sequence.create(rot1, rot2, null), 5));
spriteSister2.runAction(cc.Repeat.create(cc.Sequence.create(rot2.copy(), rot1.copy(), null), 5));
}
});
SpriteLayer.node = function () {
var node = new SpriteLayer();
return node;
};
var TestLayer = cc.Layer.extend({
onEnter:function () {
this._super();
var x, y;
var size = cc.Director.getInstance().getWinSize();
x = size.width;
y = size.height;
//cc.MutableArray *array = [UIFont familyNames];
//for( cc.String *s in array )
// NSLog( s );
var label = cc.LabelTTF.create("cocos2d", "Tahoma", 64);
label.setPosition(cc.p(x / 2, y / 2));
this.addChild(label);
}
});
TestLayer.node = function () {
var node = new TestLayer();
return node;
};
var RotateWorldMainLayer = cc.Layer.extend({
onEnter:function () {
this._super();
var x, y;
var size = cc.Director.getInstance().getWinSize();
x = size.width;
y = size.height;
var blue = cc.LayerColor.create(cc.c4b(0, 0, 255, 255));
var red = cc.LayerColor.create(cc.c4b(255, 0, 0, 255));
var green = cc.LayerColor.create(cc.c4b(0, 255, 0, 255));
var white = cc.LayerColor.create(cc.c4b(255, 255, 255, 255));
blue.setScale(0.5);
blue.setPosition(cc.p(-x / 4, -y / 4));
blue.addChild(SpriteLayer.node());
red.setScale(0.5);
red.setPosition(cc.p(x / 4, -y / 4));
green.setScale(0.5);
green.setPosition(cc.p(-x / 4, y / 4));
green.addChild(TestLayer.node());
white.setScale(0.5);
white.setPosition(cc.p(x / 4, y / 4));
this.addChild(blue, -1);
this.addChild(white);
this.addChild(green);
this.addChild(red);
var rot = cc.RotateBy.create(8, 720);
blue.runAction(rot);
red.runAction(rot.copy());
green.runAction(rot.copy());
white.runAction(rot.copy());
}
});
RotateWorldMainLayer.node = function () {
var node = new RotateWorldMainLayer();
return node;
};

View File

@ -0,0 +1,192 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var MID_PUSHSCENE = 100;
var MID_PUSHSCENETRAN = 101;
var MID_QUIT = 102;
var MID_REPLACESCENE = 103;
var MID_REPLACESCENETRAN = 104;
var MID_GOBACK = 105;
SceneTestLayer1 = cc.Layer.extend({
ctor:function () {
var s = cc.Director.getInstance().getWinSize();
var item1 = cc.MenuItemFont.create("Test pushScene", this, this.onPushScene);
var item2 = cc.MenuItemFont.create("Test pushScene w/transition", this, this.onPushSceneTran);
var item3 = cc.MenuItemFont.create("Quit", this, function () {
alert("quit")
});
var menu = cc.Menu.create(item1, item2, item3);
menu.alignItemsVertically();
this.addChild(menu);
var sprite = cc.Sprite.create(s_pathGrossini);
this.addChild(sprite);
sprite.setPosition(cc.p(s.width - 40, s.height / 2));
var rotate = cc.RotateBy.create(2, 360);
var repeat = cc.RepeatForever.create(rotate);
sprite.runAction(repeat);
this._super();
//cc.schedule(this.testDealloc);
},
onEnter:function () {
cc.log("SceneTestLayer1#onEnter");
this._super();
},
onEnterTransitionDidFinish:function () {
cc.log("SceneTestLayer1#onEnterTransitionDidFinish");
this._super();
},
testDealloc:function (dt) {
//cc.log("SceneTestLayer1:testDealloc");
},
onPushScene:function (sender) {
var scene = new SceneTestScene();
var layer = new SceneTestLayer2();
scene.addChild(layer, 0);
cc.Director.getInstance().pushScene(scene);
},
onPushSceneTran:function (sender) {
var scene = new SceneTestScene();
var layer = new SceneTestLayer2();
scene.addChild(layer, 0);
cc.Director.getInstance().pushScene(cc.TransitionSlideInT.create(1, scene));
},
onQuit:function (sender) {
}
//CREATE_NODE(SceneTestLayer1);
});
SceneTestLayer2 = cc.Layer.extend({
timeCounter:0,
ctor:function () {
this.timeCounter = 0;
var s = cc.Director.getInstance().getWinSize();
var item1 = cc.MenuItemFont.create("replaceScene", this, this.onReplaceScene);
var item2 = cc.MenuItemFont.create("replaceScene w/transition", this, this.onReplaceSceneTran);
var item3 = cc.MenuItemFont.create("Go Back", this, this.onGoBack);
var menu = cc.Menu.create(item1, item2, item3, null);
menu.alignItemsVertically();
this.addChild(menu);
var sprite = cc.Sprite.create(s_pathGrossini);
this.addChild(sprite);
sprite.setPosition(cc.p(s.width - 40, s.height / 2));
var rotate = cc.RotateBy.create(2, 360);
var repeat = cc.RepeatForever.create(rotate);
sprite.runAction(repeat);
//cc.schedule(this.testDealloc);
this._super();
},
testDealloc:function (dt) {
},
onGoBack:function (sender) {
cc.Director.getInstance().popScene();
},
onReplaceScene:function (sender) {
var scene = new SceneTestScene();
var layer = new SceneTestLayer3();
scene.addChild(layer, 0);
cc.Director.getInstance().replaceScene(scene);
},
onReplaceSceneTran:function (sender) {
var scene = new SceneTestScene();
var layer = new SceneTestLayer3();
scene.addChild(layer, 0);
cc.Director.getInstance().replaceScene(cc.TransitionSlideInT.create(2, scene));
}
//CREATE_NODE(SceneTestLayer2);
});
SceneTestLayer3 = cc.LayerColor.extend({
ctor:function () {
this._super();
this.setTouchEnabled(true);
var label = cc.LabelTTF.create("Touch to popScene", "Arial", 28);
this.addChild(label);
var s = cc.Director.getInstance().getWinSize();
label.setPosition(cc.p(s.width / 2, s.height / 2));
var sprite = cc.Sprite.create(s_pathGrossini);
this.addChild(sprite);
sprite.setPosition(cc.p(s.width - 40, s.height / 2));
var rotate = cc.RotateBy.create(2, 360);
var repeat = cc.RepeatForever.create(rotate);
sprite.runAction(repeat);
},
testDealloc:function (dt) {
},
onTouchesEnded:function (touches, event) {
cc.Director.getInstance().popScene();
}
//CREATE_NODE(SceneTestLayer3);
});
SceneTestScene = TestScene.extend({
runThisTest:function () {
var layer = new SceneTestLayer1();
this.addChild(layer);
cc.Director.getInstance().replaceScene(this);
}
});

View File

@ -0,0 +1,461 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var TAG_ANIMATION_DANCE = 1;
var MAX_TESTS = 8;
var sceneIdx = -1;
var createSchedulerTest = function (index) {
var layer = null;
switch (index) {
case 0:
layer = new SchedulerAutoremove();
break;
case 1:
layer = new SchedulerPauseResume();
break;
case 2:
layer = new SchedulerUnscheduleAll();
break;
case 3:
layer = new SchedulerUnscheduleAllHard();
break;
case 4:
layer = new SchedulerSchedulesAndRemove();
break;
case 5:
layer = new SchedulerUpdate();
break;
case 6:
layer = new SchedulerUpdateAndCustom();
break;
case 7:
layer = new SchedulerUpdateFromCustom();
break;
default:
break;
}
return layer;
};
var nextSchedulerTest = function () {
sceneIdx++;
sceneIdx = sceneIdx % MAX_TESTS;
return createSchedulerTest(sceneIdx);
};
var backSchedulerTest = function () {
sceneIdx--;
if (sceneIdx < 0)
sceneIdx += MAX_TESTS;
return createSchedulerTest(sceneIdx);
};
var restartSchedulerTest = function () {
return createSchedulerTest(sceneIdx);
};
var SchedulerTestLayer = cc.Layer.extend({
onEnter:function () {
this._super();
var s = cc.Director.getInstance().getWinSize();
var label = cc.LabelTTF.create(this.title(), "Arial", 30);
this.addChild(label);
label.setPosition(cc.p(s.width / 2, s.height - 50));
var subTitle = this.subtitle();
if (subTitle != "") {
var subLabel = cc.LabelTTF.create(subTitle, "Thonburi", 13);
this.addChild(subLabel, 1);
subLabel.setPosition(cc.p(s.width / 2, s.height - 80));
}
var item1 = cc.MenuItemImage.create("res/Images/b1.png", "res/Images/b2.png", this, this.backCallback);
var item2 = cc.MenuItemImage.create("res/Images/r1.png", "res/Images/r2.png", this, this.restartCallback);
var item3 = cc.MenuItemImage.create("res/Images/f1.png", "res/Images/f2.png", this, this.nextCallback);
var menu = cc.Menu.create(item1, item2, item3, null);
menu.setPosition(cc.p(0,0));
item1.setPosition(cc.p(s.width / 2 - 100, 30));
item2.setPosition(cc.p(s.width / 2, 30));
item3.setPosition(cc.p(s.width / 2 + 100, 30));
this.addChild(menu, 1)
},
title:function () {
return "No title";
},
subtitle:function () {
return "";
},
backCallback:function (sender) {
var scene = new SchedulerTestScene();
var layer = backSchedulerTest();
scene.addChild(layer);
cc.Director.getInstance().replaceScene(scene);
},
nextCallback:function (sender) {
var scene = new SchedulerTestScene();
var layer = nextSchedulerTest();
scene.addChild(layer);
cc.Director.getInstance().replaceScene(scene);
},
restartCallback:function (sender) {
var scene = new SchedulerTestScene();
var layer = restartSchedulerTest();
scene.addChild(layer);
cc.Director.getInstance().replaceScene(scene);
}
});
var SchedulerAutoremove = SchedulerTestLayer.extend({
_accum:0,
onEnter:function () {
this._super();
this.schedule(this.autoremove, 0.5);
this.schedule(this.tick, 0.5);
this._accum = 0;
},
title:function () {
return "Self-remove an scheduler";
},
subtitle:function () {
return "1 scheduler will be autoremoved in 3 seconds. See console";
},
autoremove:function (dt) {
this._accum += dt;
cc.log("Time: " + this._accum);
if (this._accum > 3) {
this.unschedule(this.autoremove);
cc.log("scheduler removed");
}
},
tick:function (dt) {
cc.log("This scheduler should not be removed");
}
});
var SchedulerPauseResume = SchedulerTestLayer.extend({
onEnter:function () {
this._super();
this.schedule(this.tick1, 0.5);
this.schedule(this.tick2, 0.5);
this.schedule(this.pause, 0.5);
},
title:function () {
return "Pause / Resume";
},
subtitle:function () {
return "Scheduler should be paused after 3 seconds. See console";
},
tick1:function (dt) {
cc.log("tick1");
},
tick2:function (dt) {
cc.log("tick2");
},
pause:function (dt) {
cc.Director.getInstance().getScheduler().pauseTarget(this);
}
});
var SchedulerUnscheduleAll = SchedulerTestLayer.extend({
onEnter:function () {
this._super();
this.schedule(this.tick1, 0.5);
this.schedule(this.tick2, 1.0);
this.schedule(this.tick3, 1.5);
this.schedule(this.tick4, 1.5);
this.schedule(this.unscheduleAll, 4);
},
title:function () {
return "Unschedule All selectors";
},
subtitle:function () {
return "All scheduled selectors will be unscheduled in 4 seconds. See console";
},
tick1:function (dt) {
cc.log("tick1");
},
tick2:function (dt) {
cc.log("tick2");
},
tick3:function (dt) {
cc.log("tick3");
},
tick4:function (dt) {
cc.log("tick4");
},
unscheduleAll:function (dt) {
this.unscheduleAllSelectors();
}
});
var SchedulerUnscheduleAllHard = SchedulerTestLayer.extend({
onEnter:function () {
this._super();
this.schedule(this.tick1, 0.5);
this.schedule(this.tick2, 1.0);
this.schedule(this.tick3, 1.5);
this.schedule(this.tick4, 1.5);
this.schedule(this.unscheduleAll, 4);
},
title:function () {
return "Unschedule All selectors #2";
},
subtitle:function () {
return "Unschedules all selectors after 4s. Uses CCScheduler. See console";
},
tick1:function (dt) {
cc.log("tick1");
},
tick2:function (dt) {
cc.log("tick2");
},
tick3:function (dt) {
cc.log("tick3");
},
tick4:function (dt) {
cc.log("tick4");
},
unscheduleAll:function (dt) {
cc.Director.getInstance().getScheduler().unscheduleAllSelectors();
}
});
var SchedulerSchedulesAndRemove = SchedulerTestLayer.extend({
onEnter:function () {
this._super();
this.schedule(this.tick1, 0.5);
this.schedule(this.tick2, 1.0);
this.schedule(this.scheduleAndUnschedule, 4.0);
},
title:function () {
return "Schedule from Schedule";
},
subtitle:function () {
return "Will unschedule and schedule selectors in 4s. See console";
},
tick1:function (dt) {
cc.log("tick1");
},
tick2:function (dt) {
cc.log("tick2");
},
tick3:function (dt) {
cc.log("tick3");
},
tick4:function (dt) {
cc.log("tick4");
},
scheduleAndUnschedule:function (dt) {
this.unschedule(this.tick1);
this.unschedule(this.tick2);
this.unschedule(this.scheduleAndUnschedule);
this.schedule(this.tick3, 1.0);
this.schedule(this.tick4, 1.0);
}
});
var TestNode = cc.Node.extend({
_pString:"",
initWithString:function (str, priority) {
this._pString = str;
this.scheduleUpdateWithPriority(priority);
}
});
var SchedulerUpdate = SchedulerTestLayer.extend({
onEnter:function () {
this._super();
var d = new TestNode();
var str = "---";
d.initWithString(str, 50);
this.addChild(d);
var b = new TestNode();
str = "3rd";
b.initWithString(str, 0);
this.addChild(b);
var a = new TestNode();
str = "1st";
a.initWithString(str, -10);
this.addChild(a);
var c = new TestNode();
str = "4th";
c.initWithString(str, 10);
this.addChild(c);
var e = new TestNode();
str = "5th";
e.initWithString(str, 20);
this.addChild(e);
var f = new TestNode();
str = "2nd";
f.initWithString(str, -5);
this.addChild(f);
this.schedule(this.removeUpdates, 4.0);
},
title:function () {
return "Schedule update with priority";
},
subtitle:function () {
return "3 scheduled updates. Priority should work. Stops in 4s. See console";
},
removeUpdates:function (dt) {
var children = this.getChildren();
for (var i = 0; i < children.length; i++) {
var node = children[i];
if (node) {
node.unscheduleAllSelectors();
}
}
}
});
var SchedulerUpdateAndCustom = SchedulerTestLayer.extend({
onEnter:function () {
this._super();
this.scheduleUpdate();
this.schedule(this.tick);
this.schedule(this.stopSelectors, 0.4);
},
title:function () {
return "Schedule Update + custom selector";
},
subtitle:function () {
return "Update + custom selector at the same time. Stops in 4s. See console";
},
update:function (dt) {
cc.log("update called:" + dt);
},
tick:function (dt) {
cc.log("custom selector called:" + dt);
},
stopSelectors:function (dt) {
this.unscheduleAllSelectors();
}
});
var SchedulerUpdateFromCustom = SchedulerTestLayer.extend({
onEnter:function () {
this._super();
this.schedule(this.schedUpdate, 2.0);
},
title:function () {
return "Schedule Update in 2 sec";
},
subtitle:function () {
return "Update schedules in 2 secs. Stops 2 sec later. See console";
},
update:function (dt) {
cc.log("update called:" + dt);
},
schedUpdate:function (dt) {
this.unschedule(this.schedUpdate);
this.scheduleUpdate();
this.schedule(this.stopUpdate, 2.0);
},
stopUpdate:function (dt) {
this.unscheduleUpdate();
this.unschedule(this.stopUpdate);
}
});
var RescheduleSelector = SchedulerTestLayer.extend({
_interval:1.0,
_ticks:0,
onEnter:function () {
this._super();
this._interval = 1.0;
this._ticks = 0;
this.schedule(this.schedUpdate, this._interval);
},
title:function () {
return "Reschedule Selector";
},
subtitle:function () {
return "Interval is 1 second, then 2, then 3...";
},
schedUpdate:function (dt) {
this._ticks++;
cc.log("schedUpdate: " + dt.toFixed(2));
if (this._ticks > 3) {
this._interval += 1.0;
this.schedule(this.schedUpdate, this._interval);
this._ticks = 0;
}
}
});
var SchedulerTestScene = TestScene.extend({
runThisTest:function () {
var layer = nextSchedulerTest();
this.addChild(layer);
cc.Director.getInstance().replaceScene(this);
}
});

View File

@ -0,0 +1 @@
060f4e7b441575496d875cf27a0928d53a3806dc

View File

@ -0,0 +1,126 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var CustomTableViewCell = cc.TableViewCell.extend({
draw:function (ctx) {
this._super(ctx);
}
});
var TableViewTestLayer = cc.Layer.extend({
init:function () {
if (!this._super()) {
return false;
}
var winSize = cc.Director.getInstance().getWinSize();
var tableView = cc.TableView.create(this, cc.SizeMake(600, 60));
tableView.setDirection(cc.SCROLLVIEW_DIRECTION_HORIZONTAL);
tableView.setPosition(cc.p(20, winSize.height / 2 - 150));
tableView.setDelegate(this);
this.addChild(tableView);
tableView.reloadData();
tableView = cc.TableView.create(this, cc.SizeMake(60, 350));
tableView.setDirection(cc.SCROLLVIEW_DIRECTION_VERTICAL);
tableView.setPosition(cc.p(winSize.width - 150, winSize.height / 2 - 150));
tableView.setDelegate(this);
tableView.setVerticalFillOrder(cc.TABLEVIEW_FILL_TOPDOWN);
this.addChild(tableView);
tableView.reloadData();
// Back Menu
var itemBack = cc.MenuItemFont.create("Back", this, this.toExtensionsMainLayer);
itemBack.setPosition(cc.p(winSize.width - 50, 25));
var menuBack = cc.Menu.create(itemBack);
menuBack.setPosition(cc.p(0,0));
this.addChild(menuBack);
return true;
},
toExtensionsMainLayer:function (sender) {
var scene = new ExtensionsTestScene();
scene.runThisTest();
},
scrollViewDidScroll:function (view) {
},
scrollViewDidZoom:function (view) {
},
tableCellTouched:function (table, cell) {
cc.log("cell touched at index: " + cell.getIdx());
},
cellSizeForTable:function (table) {
return cc.SizeMake(60, 60);
},
tableCellAtIndex:function (table, idx) {
var strValue = idx.toFixed(0);
var cell = table.dequeueCell();
var label;
if (!cell) {
cell = new CustomTableViewCell();
var sprite = cc.Sprite.create(s_image_icon);
sprite.setAnchorPoint(cc.p(0,0));
sprite.setPosition(cc.p(0, 0));
cell.addChild(sprite);
label = cc.LabelTTF.create(strValue, "Helvetica", 20.0);
label.setPosition(cc.p(0,0));
label.setAnchorPoint(cc.p(0,0));
label.setTag(123);
cell.addChild(label);
} else {
label = cell.getChildByTag(123);
label.setString(strValue);
}
return cell;
},
numberOfCellsInTableView:function (table) {
return 25;
}
});
TableViewTestLayer.create = function () {
var retObj = new TableViewTestLayer();
if (retObj && retObj.init()) {
return retObj;
}
return null;
};
var runTableViewTest = function () {
var pScene = cc.Scene.create();
var pLayer = TableViewTestLayer.create();
pScene.addChild(pLayer);
cc.Director.getInstance().replaceScene(pScene);
};

View File

@ -0,0 +1,56 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var TestHeaderLayer = cc.Layer.extend({
onResolveCCBCCMenuItemSelector:function(target, selectorName){
if(this == target && "onBackClicked" == selectorName){
return this.onBackClicked;
}
return null;
},
onResolveCCBCCControlSelector:function(target,selectorName){
return null;
},
onBackClicked:function(sender){
cc.Director.getInstance().popScene();
}
});
TestHeaderLayer.create = function(){
var retObj = new TestHeaderLayer();
if(retObj && retObj.init()){
return retObj;
}
return null;
};
var TestHeaderLayerLoader = cc.LayerLoader.extend({
_createCCNode:function(parent,ccbReader){
return TestHeaderLayer.create();
}
});

View File

@ -0,0 +1,422 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var TEXT_FIELD_TTF_DEFAULT_TEST = 0;
var TEXT_FIELD_TTF_ACTION_TEST = 1;
var TEXT_INPUT_TESTS_COUNT = 2;
var TEXT_INPUT_FONT_NAME = "Thonburi";
var TEXT_INPUT_FONT_SIZE = 36;
var inputTestIdx = -1;
var createTextInputTest = function (index) {
switch (index) {
case TEXT_FIELD_TTF_DEFAULT_TEST:
return new TextFieldTTFDefaultTest();
case TEXT_FIELD_TTF_ACTION_TEST:
return new TextFieldTTFActionTest();
default:
return 0;
}
};
var restartTextInputTest = function () {
var containerLayer = new TextInputTest();
var testLayer = createTextInputTest(inputTestIdx);
containerLayer.addKeyboardNotificationLayer(testLayer);
return containerLayer;
};
var nextTextInputTest = function () {
inputTestIdx++;
inputTestIdx = inputTestIdx % TEXT_INPUT_TESTS_COUNT;
return restartTextInputTest();
};
var backTextInputTest = function () {
inputTestIdx--;
if (inputTestIdx < 0)
inputTestIdx += TEXT_INPUT_TESTS_COUNT;
return restartTextInputTest();
};
var textInputGetRect = function (node) {
var rc = cc.rect(node.getPosition().x, node.getPosition().y, node.getContentSize().width, node.getContentSize().height);
rc.origin.x -= rc.size.width / 2;
rc.origin.y -= rc.size.height / 2;
return rc;
};
/**
@brief TextInputTest for retain prev, reset, next, main menu buttons.
*/
var TextInputTest = cc.Layer.extend({
notificationLayer:null,
ctor:function () {
},
restartCallback:function (sender) {
var s = new TextInputTestScene();
s.addChild(restartTextInputTest());
cc.Director.getInstance().replaceScene(s);
},
nextCallback:function (sender) {
var s = new TextInputTestScene();
s.addChild(nextTextInputTest());
cc.Director.getInstance().replaceScene(s);
},
backCallback:function (sender) {
var s = new TextInputTestScene();
s.addChild(backTextInputTest());
cc.Director.getInstance().replaceScene(s);
},
title:function () {
return "text input test";
},
addKeyboardNotificationLayer:function (layer) {
this.notificationLayer = layer;
this.addChild(layer);
},
onEnter:function () {
this._super();
var s = cc.Director.getInstance().getWinSize();
var label = cc.LabelTTF.create(this.title(), "Arial", 24);
this.addChild(label);
label.setPosition(cc.p(s.width / 2, s.height - 50));
var subTitle = this.notificationLayer.subtitle();
if (subTitle && subTitle != "") {
var l = cc.LabelTTF.create(subTitle, "Thonburi", 16);
this.addChild(l, 1);
l.setPosition(cc.p(s.width / 2, s.height - 80));
}
var item1 = cc.MenuItemImage.create(s_pathB1, s_pathB2, this, this.backCallback);
var item2 = cc.MenuItemImage.create(s_pathR1, s_pathR2, this, this.restartCallback);
var item3 = cc.MenuItemImage.create(s_pathF1, s_pathF2, this, this.nextCallback);
var menu = cc.Menu.create(item1, item2, item3);
menu.setPosition(cc.p(0,0));
item1.setPosition(cc.p(s.width / 2 - 100, 30));
item2.setPosition(cc.p(s.width / 2, 30));
item3.setPosition(cc.p(s.width / 2 + 100, 30));
this.addChild(menu, 1);
}
});
//////////////////////////////////////////////////////////////////////////
// KeyboardNotificationLayer for test IME keyboard notification.
//////////////////////////////////////////////////////////////////////////
var KeyboardNotificationLayer = cc.Layer.extend({
_pTrackNode:null,
_beginPos:null,
ctor:function () {
this.setTouchEnabled(true);
},
subtitle:function () {
return "";
},
onClickTrackNode:function (clicked) {
},
registerWithTouchDispatcher:function () {
cc.Director.getInstance().getTouchDispatcher().addTargetedDelegate(this, 0, false);
},
keyboardWillShow:function (info) {
cc.log("TextInputTest:keyboardWillShowAt(origin:" + info.end.origin.x + "," + info.end.origin.y
+ ", size:" + info.end.size.width + "," + info.end.size.height + ")");
if (!this._pTrackNode) {
return;
}
var rectTracked = textInputGetRect(this._pTrackNode);
cc.log("TextInputTest:trackingNodeAt(origin:" + info.end.origin.x + "," + info.end.origin.y
+ ", size:" + info.end.size.width + "," + info.end.size.height + ")");
// if the keyboard area doesn't intersect with the tracking node area, nothing need to do.
if (!cc.Rect.CCRectIntersectsRect(rectTracked, info.end)) {
return;
}
// assume keyboard at the bottom of screen, calculate the vertical adjustment.
var adjustVert = cc.Rect.CCRectGetMaxY(info.end) - cc.Rect.CCRectGetMinY(rectTracked);
cc.log("TextInputTest:needAdjustVerticalPosition(" + adjustVert + ")");
// move all the children node of KeyboardNotificationLayer
var children = this.getChildren();
for (var i = 0; i < children.length; ++i) {
var node = children[i];
var pos = node.getPosition();
pos.y += adjustVert;
node.setPosition(pos);
}
},
onTouchBegan:function (touch, event) {
cc.log("++++++++++++++++++++++++++++++++++++++++++++");
this._beginPos = touch.getLocation();
this._beginPos = cc.Director.getInstance().convertToGL(this._beginPos);
return true;
},
onTouchEnded:function (touch, event) {
if (!this._pTrackNode) {
return;
}
var endPos = touch.getLocation();
endPos = cc.Director.getInstance().convertToGL(endPos);
var delta = 5.0;
if (Math.abs(endPos.x - this._beginPos.x) > delta
|| Math.abs(endPos.y - this._beginPos.y) > delta) {
// not click
this._beginPos.x = this._beginPos.y = -1;
return;
}
// decide the trackNode is clicked.
var point = this.convertTouchToNodeSpaceAR(touch);
//var point = endPos;
cc.log("KeyboardNotificationLayer:clickedAt(" + point.x + "," + point.y + ")");
var rect = textInputGetRect(this._pTrackNode);
cc.log("KeyboardNotificationLayer:TrackNode at(origin:" + rect.origin.x + "," + rect.origin.y
+ ", size:" + rect.size.width + "," + rect.size.height + ")");
this.onClickTrackNode(cc.Rect.CCRectContainsPoint(rect, point));
cc.log("----------------------------------");
}
});
//////////////////////////////////////////////////////////////////////////
// TextFieldTTFDefaultTest for test TextFieldTTF default behavior.
//////////////////////////////////////////////////////////////////////////
var TextFieldTTFDefaultTest = KeyboardNotificationLayer.extend({
subtitle:function () {
return "TextFieldTTF with default behavior test";
},
onClickTrackNode:function (clicked) {
var textField = this._pTrackNode;
if (clicked) {
// TextFieldTTFTest be clicked
cc.log("TextFieldTTFDefaultTest:CCTextFieldTTF attachWithIME");
textField.attachWithIME();
}
else {
// TextFieldTTFTest not be clicked
cc.log("TextFieldTTFDefaultTest:CCTextFieldTTF detachWithIME");
textField.detachWithIME();
}
},
onEnter:function () {
this._super();
// add CCTextFieldTTF
var s = cc.Director.getInstance().getWinSize();
var textField = cc.TextFieldTTF.create("<click here for input>",
TEXT_INPUT_FONT_NAME,
TEXT_INPUT_FONT_SIZE);
this.addChild(textField);
textField.setPosition(cc.p(s.width / 2, s.height / 2));
this._pTrackNode = textField;
}
});
//////////////////////////////////////////////////////////////////////////
// TextFieldTTFActionTest
//////////////////////////////////////////////////////////////////////////
var TextFieldTTFActionTest = KeyboardNotificationLayer.extend({
_pTextField:null,
_pTextFieldAction:null,
_bAction:false,
_nCharLimit:0, // the textfield max char limit
ctor:function () {
this._super();
},
callbackRemoveNodeWhenDidAction:function (node) {
this.removeChild(node, true);
},
// KeyboardNotificationLayer
subtitle:function () {
return "CCTextFieldTTF with action and char limit test";
},
onClickTrackNode:function (clicked) {
var textField = this._pTrackNode;
if (clicked) {
// TextFieldTTFTest be clicked
cc.log("TextFieldTTFActionTest:CCTextFieldTTF attachWithIME");
textField.attachWithIME();
} else {
// TextFieldTTFTest not be clicked
cc.log("TextFieldTTFActionTest:CCTextFieldTTF detachWithIME");
textField.detachWithIME();
}
},
//CCLayer
onEnter:function () {
this._super();
this._nCharLimit = 20;
this._pTextFieldAction = cc.RepeatForever.create(
cc.Sequence.create(
cc.FadeOut.create(0.25),
cc.FadeIn.create(0.25)));
this._bAction = false;
// add CCTextFieldTTF
var s = cc.Director.getInstance().getWinSize();
this._pTextField = cc.TextFieldTTF.create("<click here for input>",
TEXT_INPUT_FONT_NAME,
TEXT_INPUT_FONT_SIZE);
this.addChild(this._pTextField);
this._pTextField.setDelegate(this);
this._pTextField.setPosition(cc.p(s.width / 2, s.height / 2));
this._pTrackNode = this._pTextField;
},
onExit:function () {
this._super();
},
//CCTextFieldDelegate
onTextFieldAttachWithIME:function (sender) {
if (!this._bAction) {
this._pTextField.runAction(this._pTextFieldAction);
this._bAction = true;
}
return false;
},
onTextFieldDetachWithIME:function (sender) {
if (this._bAction) {
this._pTextField.stopAction(this._pTextFieldAction);
this._pTextField.setOpacity(255);
this._bAction = false;
}
return false;
},
onTextFieldInsertText:function (sender, text, len) {
// if insert enter, treat as default to detach with ime
if ('\n' == text) {
return false;
}
// if the textfield's char count more than m_nCharLimit, doesn't insert text anymore.
if (sender.getCharCount() >= this._nCharLimit) {
return true;
}
// create a insert text sprite and do some action
var label = cc.LabelTTF.create(text, TEXT_INPUT_FONT_NAME, TEXT_INPUT_FONT_SIZE);
this.addChild(label);
var color = new cc.Color3B(226, 121, 7);
label.setColor(color);
// move the sprite from top to position
var endPos = cc.p(sender.getPositionX(), sender.getPositionY());
if (sender.getCharCount()) {
endPos.x += sender.getContentSize().width / 2;
}
var inputTextSize = label.getContentSize();
var beginPos = cc.p(endPos.x, cc.Director.getInstance().getWinSize().height - inputTextSize.height * 2);
var duration = 0.5;
label.setPosition(beginPos);
label.setScale(8);
var seq = cc.Sequence.create(
cc.Spawn.create(
cc.MoveTo.create(duration, endPos),
cc.ScaleTo.create(duration, 1),
cc.FadeOut.create(duration)),
cc.CallFunc.create(this, this.callbackRemoveNodeWhenDidAction));
label.runAction(seq);
return false;
},
onTextFieldDeleteBackward:function (sender, delText, len) {
// create a delete text sprite and do some action
var label = cc.LabelTTF.create(delText, TEXT_INPUT_FONT_NAME, TEXT_INPUT_FONT_SIZE);
this.addChild(label);
// move the sprite to fly out
var beginPos = cc.p(sender.getPositionX(), sender.getPositionY());
var textfieldSize = sender.getContentSize();
var labelSize = label.getContentSize();
beginPos.x += (textfieldSize.width - labelSize.width) / 2.0;
var winSize = cc.Director.getInstance().getWinSize();
var endPos = cc.p(-winSize.width / 4.0, winSize.height * (0.5 + Math.random() / 2.0));
var duration = 1;
var rotateDuration = 0.2;
var repeatTime = 5;
label.setPosition(beginPos);
var seq = cc.Sequence.create(
cc.Spawn.create(
cc.MoveTo.create(duration, endPos),
cc.Repeat.create(
cc.RotateBy.create(rotateDuration, (Math.random() % 2) ? 360 : -360),
repeatTime),
cc.FadeOut.create(duration)),
cc.CallFunc.create(this, this.callbackRemoveNodeWhenDidAction));
label.runAction(seq);
return false;
},
onDraw:function (sender) {
return false;
}
});
var TextInputTestScene = TestScene.extend({
runThisTest:function () {
var layer = nextTextInputTest();
this.addChild(layer);
cc.Director.getInstance().replaceScene(this);
}
});

View File

@ -0,0 +1,149 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var TextureCacheTest = cc.Layer.extend({
_labelLoading:null,
_labelPercent:null,
_numberOfSprites:20,
_numberOfLoadedSprites:0,
ctor:function () {
var size = cc.Director.getInstance().getWinSize();
this._labelLoading = cc.LabelTTF.create("loading...", "Arial", 15);
this._labelPercent = cc.LabelTTF.create("%0", "Arial", 15);
this._labelLoading.setPosition(cc.p(size.width / 2, size.height / 2 - 20));
this._labelPercent.setPosition(cc.p(size.width / 2, size.height / 2 + 20));
this.addChild(this._labelLoading);
this.addChild(this._labelPercent);
// load textrues
cc.TextureCache.getInstance().addImageAsync("res/Images/HelloWorld.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/grossini.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/grossini_dance_01.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/grossini_dance_02.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/grossini_dance_03.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/grossini_dance_04.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/grossini_dance_05.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/grossini_dance_06.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/grossini_dance_07.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/grossini_dance_08.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/grossini_dance_09.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/grossini_dance_10.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/grossini_dance_11.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/grossini_dance_12.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/grossini_dance_13.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/grossini_dance_14.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/background1.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/background2.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/background3.png", this, this.loadingCallBack);
cc.TextureCache.getInstance().addImageAsync("res/Images/blocks.png", this, this.loadingCallBack);
},
addSprite:function () {
var size = cc.Director.getInstance().getWinSize();
// create sprites
var bg = cc.Sprite.create("res/Images/HelloWorld.png");
bg.setPosition(cc.p(size.width / 2, size.height / 2));
//bg.setScale(1.7);
var s1 = cc.Sprite.create("res/Images/grossini.png");
var s2 = cc.Sprite.create("res/Images/grossini_dance_01.png");
var s3 = cc.Sprite.create("res/Images/grossini_dance_02.png");
var s4 = cc.Sprite.create("res/Images/grossini_dance_03.png");
var s5 = cc.Sprite.create("res/Images/grossini_dance_04.png");
var s6 = cc.Sprite.create("res/Images/grossini_dance_05.png");
var s7 = cc.Sprite.create("res/Images/grossini_dance_06.png");
var s8 = cc.Sprite.create("res/Images/grossini_dance_07.png");
var s9 = cc.Sprite.create("res/Images/grossini_dance_08.png");
var s10 = cc.Sprite.create("res/Images/grossini_dance_09.png");
var s11 = cc.Sprite.create("res/Images/grossini_dance_10.png");
var s12 = cc.Sprite.create("res/Images/grossini_dance_11.png");
var s13 = cc.Sprite.create("res/Images/grossini_dance_12.png");
var s14 = cc.Sprite.create("res/Images/grossini_dance_13.png");
var s15 = cc.Sprite.create("res/Images/grossini_dance_14.png");
// just loading textures to slow down
var s16 = cc.Sprite.create("res/Images/background1.png");
var s17 = cc.Sprite.create("res/Images/background2.png");
var s18 = cc.Sprite.create("res/Images/background3.png");
var s19 = cc.Sprite.create("res/Images/blocks.png");
s1.setPosition(cc.p(50, 50));
s2.setPosition(cc.p(60, 50));
s3.setPosition(cc.p(70, 50));
s4.setPosition(cc.p(80, 50));
s5.setPosition(cc.p(90, 50));
s6.setPosition(cc.p(100, 50));
s7.setPosition(cc.p(50, 180));
s8.setPosition(cc.p(60, 180));
s9.setPosition(cc.p(70, 180));
s10.setPosition(cc.p(80, 180));
s11.setPosition(cc.p(90, 180));
s12.setPosition(cc.p(100, 180));
s13.setPosition(cc.p(50, 270));
s14.setPosition(cc.p(60, 270));
s15.setPosition(cc.p(70, 270));
this.addChild(bg);
this.addChild(s1);
this.addChild(s2);
this.addChild(s3);
this.addChild(s4);
this.addChild(s5);
this.addChild(s6);
this.addChild(s7);
this.addChild(s8);
this.addChild(s9);
this.addChild(s10);
this.addChild(s11);
this.addChild(s12);
this.addChild(s13);
this.addChild(s14);
this.addChild(s15);
},
loadingCallBack:function (obj) {
++this._numberOfLoadedSprites;
this._labelPercent = (this._numberOfLoadedSprites / this._numberOfSprites) * 100;
if (this._numberOfLoadedSprites == this._numberOfSprites) {
this.removeChild(this._labelLoading, true);
this.removeChild(this._labelPercent, true);
this.addSprite();
}
}
});
var TextureCacheTestScene = TestScene.extend({
runThisTest:function () {
var layer = new TextureCacheTest();
this.addChild(layer);
cc.Director.getInstance().replaceScene(this);
}
});

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,121 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
var HIGH_PLAYER = 0;
var LOW_PLAYER = 1;
var STATUS_BAR_HEIGHT = 20.0;
var SPRITE_TAG = 0;
var TouchesTestScene = TestScene.extend({
ctor:function () {
// this._super(true);
var pongLayer = new PongLayer();
this.addChild(pongLayer);
},
runThisTest:function () {
cc.Director.getInstance().replaceScene(this);
},
MainMenuCallback:function (sender) {
this._super(sender);
}
});
var PongLayer = cc.Layer.extend({
_ball:null,
_paddles:[],
_ballStartingVelocity:cc.p(0,0),
_winSize:null,
ctor:function () {
cc.associateWithNative( this, cc.Layer );
this.init();
},
init:function () {
this._ballStartingVelocity = cc.p(20.0, -100.0);
this._winSize = cc.Director.getInstance().getWinSize();
log(Ball);
this._ball = Ball.ballWithTexture(cc.TextureCache.getInstance().addImage(s_ball));
this._ball.setPosition(cc.p(this._winSize.width / 2, this._winSize.height / 2));
this._ball.setVelocity(this._ballStartingVelocity);
this.addChild(this._ball);
var paddleTexture = cc.TextureCache.getInstance().addImage(s_paddle);
this._paddles = [];
var paddle = Paddle.paddleWithTexture(paddleTexture);
paddle.setPosition(cc.p(this._winSize.width / 2, 15));
this._paddles.push(paddle);
paddle = Paddle.paddleWithTexture(paddleTexture);
paddle.setPosition(cc.p(this._winSize.width / 2, this._winSize.height - STATUS_BAR_HEIGHT - 15));
this._paddles.push(paddle);
paddle = Paddle.paddleWithTexture(paddleTexture);
paddle.setPosition(cc.p(this._winSize.width / 2, 100));
this._paddles.push(paddle);
paddle = Paddle.paddleWithTexture(paddleTexture);
paddle.setPosition(cc.p(this._winSize.width / 2, this._winSize.height - STATUS_BAR_HEIGHT - 100));
this._paddles.push(paddle);
for (var i = 0; i < this._paddles.length; i++) {
if (!this._paddles[i])
break;
this.addChild(this._paddles[i]);
}
this.schedule(this.doStep);
},
resetAndScoreBallForPlayer:function (player) {
if (Math.abs(this._ball.getVelocity().y) < 300) {
this._ballStartingVelocity = cc.pMult(this._ballStartingVelocity, -1.1);
} else {
this._ballStartingVelocity = cc.pMult(this._ballStartingVelocity, -1);
}
this._ball.setVelocity(this._ballStartingVelocity);
this._ball.setPosition(cc.p(this._winSize.width / 2, this._winSize.height / 2));
// TODO -- scoring
},
doStep:function (delta) {
this._ball.move(delta);
for (var i = 0; i < this._paddles.length; i++) {
if (!this._paddles[i])
break;
this._ball.collideWithPaddle(this._paddles[i]);
}
if (this._ball.getPosition().y > this._winSize.height - STATUS_BAR_HEIGHT + this._ball.radius())
this.resetAndScoreBallForPlayer(LOW_PLAYER);
else if (this._ball.getPosition().y < -this._ball.radius())
this.resetAndScoreBallForPlayer(HIGH_PLAYER);
this._ball.draw();
}
});

View File

@ -0,0 +1,491 @@
/****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2011 Zynga Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
TRANSITION_DURATION = 1.2;
var TransitionsTests = [
{title:"JumpZoomTransition", transitionFunc:function (t, s) {
return new JumpZoomTransition(t, s);
}},
{title:"TransitionProgressRadialCCW", transitionFunc:function (t, s) {
return cc.TransitionProgressRadialCCW.create(t, s);
}},
{title:"TransitionProgressRadialCW", transitionFunc:function (t, s) {
return cc.TransitionProgressRadialCW.create(t, s);
}},
{title:"TransitionProgressHorizontal", transitionFunc:function (t, s) {
return cc.TransitionProgressHorizontal.create(t, s);
}},
{title:"TransitionProgressVertical", transitionFunc:function (t, s) {
return cc.TransitionProgressVertical.create(t, s);
}},
{title:"TransitionProgressInOut", transitionFunc:function (t, s) {
return cc.TransitionProgressInOut.create(t, s);
}},
{title:"TransitionProgressOutIn", transitionFunc:function (t, s) {
return cc.TransitionProgressOutIn.create(t, s);
}},
//ok
{title:"FadeTransition", transitionFunc:function (t, s) {
return new FadeTransition(t, s);
}},
{title:"FadeWhiteTransition", transitionFunc:function (t, s) {
return new FadeWhiteTransition(t, s);
}},
/*function(t,s){ return new FlipXLeftOver(t,s);},
function(t,s){ return new FlipXRightOver(t,s);},
function(t,s){ return new FlipYUpOver(t,s);},
function(t,s){ return new FlipYDownOver(t,s);},
function(t,s){ return new FlipAngularLeftOver(t,s);},
function(t,s){ return new FlipAngularRightOver(t,s);},
function(t,s){ return new ZoomFlipXLeftOver(t,s);},
function(t,s){ return new ZoomFlipXRightOver(t,s);},
function(t,s){ return new ZoomFlipYUpOver(t,s);},
function(t,s){ return new ZoomFlipYDownOver(t,s);},
function(t,s){ return new ZoomFlipAngularLeftOver(t,s);},
function(t,s){ return new ZoomFlipAngularRightOver(t,s);},*/
{title:"ShrinkGrowTransition", transitionFunc:function (t, s) {
return new ShrinkGrowTransition(t, s);
}},
{title:"RotoZoomTransition", transitionFunc:function (t, s) {
return new RotoZoomTransition(t, s);
}},
{title:"MoveInLTransition", transitionFunc:function (t, s) {
return new MoveInLTransition(t, s);
}},
{title:"MoveInRTransition", transitionFunc:function (t, s) {
return new MoveInRTransition(t, s);
}},
{title:"MoveInTTransition", transitionFunc:function (t, s) {
return new MoveInTTransition(t, s);
}},
{title:"MoveInBTransition", transitionFunc:function (t, s) {
return new MoveInBTransition(t, s);
}},
{title:"SlideInLTransition", transitionFunc:function (t, s) {
return new SlideInLTransition(t, s);
}},
{title:"SlideInRTransition", transitionFunc:function (t, s) {
return new SlideInRTransition(t, s);
}},
{title:"SlideInTTransition", transitionFunc:function (t, s) {
return new SlideInTTransition(t, s);
}},
{title:"SlideInBTransition", transitionFunc:function (t, s) {
return new SlideInBTransition(t, s);
}}
/*function(t,s){ return new CCTransitionCrossFade(t,s);},
function(t,s){ return new CCTransitionRadialCCW(t,s);},
function(t,s){ return new CCTransitionRadialCW(t,s);},*/
/*function(t,s){ return new PageTransitionForward(t,s);},
function(t,s){ return new PageTransitionBackward(t,s);},
function(t,s){ return new FadeTRTransition(t,s);},
function(t,s){ return new FadeBLTransition(t,s);},
function(t,s){ return new FadeUpTransition(t,s);},
function(t,s){ return new FadeDownTransition(t,s);},
function(t,s){ return new TurnOffTilesTransition(t,s);},
function(t,s){ return new SplitRowsTransition(t,s);},
function(t,s){ return new SplitColsTransition(t,s);}*/
];
var transitionsIdx = 0;
// the class inherit from TestScene
// every .Scene each test used must inherit from TestScene,
// make sure the test have the menu item for back to main menu
var TransitionsTestScene = TestScene.extend({
runThisTest:function () {
var layer = new TestLayer1();
this.addChild(layer);
cc.Director.getInstance().replaceScene(this);
}
});
var TestLayer1 = cc.Layer.extend({
ctor:function () {
this._super();
//this.init();
var x, y;
var size = cc.Director.getInstance().getWinSize();
x = size.width;
y = size.height;
var bg1 = cc.Sprite.create(s_back1);
bg1.setPosition(cc.p(size.width / 2, size.height / 2));
bg1.setScale(1.7);
this.addChild(bg1, -1);
var title = cc.LabelTTF.create(TransitionsTests[transitionsIdx].title, "Thonburi", 32);
this.addChild(title);
title.setColor(cc.c3b(255, 32, 32));
title.setPosition(cc.p(x / 2, y - 100));
var label = cc.LabelTTF.create("SCENE 1", "Marker Felt", 38);
label.setColor(cc.c3b(16, 16, 255));
label.setPosition(cc.p(x / 2, y / 2));
this.addChild(label);
// menu
var item1 = cc.MenuItemImage.create(s_pathB1, s_pathB2, this, this.backCallback);
var item2 = cc.MenuItemImage.create(s_pathR1, s_pathR2, this, this.restartCallback);
var item3 = cc.MenuItemImage.create(s_pathF1, s_pathF2, this, this.nextCallback);
var menu = cc.Menu.create(item1, item2, item3, null);
menu.setPosition(cc.p(0,0));
item1.setPosition(cc.p(size.width / 2 - item2.getContentSize().width * 2, item2.getContentSize().height / 2));
item2.setPosition(cc.p(size.width / 2, item2.getContentSize().height / 2));
item3.setPosition(cc.p(size.width / 2 + item2.getContentSize().width * 2, item2.getContentSize().height / 2));
this.addChild(menu, 1);
this.schedule(this.step, 1.0);
},
restartCallback:function (sender) {
var s = new TransitionsTestScene();
var layer = new TestLayer2();
s.addChild(layer);
var scene = TransitionsTests[transitionsIdx].transitionFunc(TRANSITION_DURATION, s);
if (scene) {
cc.Director.getInstance().replaceScene(scene);
}
},
nextCallback:function (sender) {
transitionsIdx++;
transitionsIdx = transitionsIdx % TransitionsTests.length;
var s = new TransitionsTestScene();
var layer = new TestLayer2();
s.addChild(layer);
var scene = TransitionsTests[transitionsIdx].transitionFunc(TRANSITION_DURATION, s);
if (scene) {
cc.Director.getInstance().replaceScene(scene);
}
},
backCallback:function (sender) {
transitionsIdx--;
if (transitionsIdx < 0)
transitionsIdx += TransitionsTests.length;
var s = new TransitionsTestScene();
var layer = new TestLayer2();
s.addChild(layer);
var scene = TransitionsTests[transitionsIdx].transitionFunc(TRANSITION_DURATION, s);
if (scene) {
cc.Director.getInstance().replaceScene(scene);
}
},
step:function (dt) {
},
onEnter:function () {
this._super();
cc.log("Scene 1 onEnter");
},
onEnterTransitionDidFinish:function () {
this._super();
cc.log("Scene 1 onEnterTransitionDidFinish");
},
onExitTransitionDidStart:function () {
this._super();
cc.log("Scene 1 onExitTransitionDidStart");
},
onExit:function () {
this._super();
cc.log("Scene 1 onExit");
}
});
var TestLayer2 = cc.Layer.extend({
ctor:function () {
this._super();
//this.init();
var x, y;
var size = cc.Director.getInstance().getWinSize();
x = size.width;
y = size.height;
var bg1 = cc.Sprite.create(s_back2);
bg1.setPosition(cc.p(size.width / 2, size.height / 2));
bg1.setScale(1.7);
this.addChild(bg1, -1);
var title = cc.LabelTTF.create(TransitionsTests[transitionsIdx].title, "Thonburi", 32);
this.addChild(title);
title.setColor(cc.c3b(255, 32, 32));
title.setPosition(cc.p(x / 2, y - 100));
var label = cc.LabelTTF.create("SCENE 2", "Marker Felt", 38);
label.setColor(cc.c3b(16, 16, 255));
label.setPosition(cc.p(x / 2, y / 2));
this.addChild(label);
// menu
var item1 = cc.MenuItemImage.create(s_pathB1, s_pathB2, this, this.backCallback);
var item2 = cc.MenuItemImage.create(s_pathR1, s_pathR2, this, this.restartCallback);
var item3 = cc.MenuItemImage.create(s_pathF1, s_pathF2, this, this.nextCallback);
var menu = cc.Menu.create(item1, item2, item3, null);
menu.setPosition(cc.p(0,0));
item1.setPosition(cc.p(size.width / 2 - item2.getContentSize().width * 2, item2.getContentSize().height / 2));
item2.setPosition(cc.p(size.width / 2, item2.getContentSize().height / 2));
item3.setPosition(cc.p(size.width / 2 + item2.getContentSize().width * 2, item2.getContentSize().height / 2));
this.addChild(menu, 1);
this.schedule(this.step, 1.0);
},
restartCallback:function (sender) {
var s = new TransitionsTestScene();
var layer = new TestLayer1();
s.addChild(layer);
var scene = TransitionsTests[transitionsIdx].transitionFunc(TRANSITION_DURATION, s);
if (scene) {
cc.Director.getInstance().replaceScene(scene);
}
},
nextCallback:function (sender) {
transitionsIdx++;
transitionsIdx = transitionsIdx % TransitionsTests.length;
var s = new TransitionsTestScene();
var layer = new TestLayer1();
s.addChild(layer);
var scene = TransitionsTests[transitionsIdx].transitionFunc(TRANSITION_DURATION, s);
if (scene) {
cc.Director.getInstance().replaceScene(scene);
}
},
backCallback:function (sender) {
transitionsIdx--;
if (transitionsIdx < 0)
transitionsIdx += TransitionsTests.length;
var s = new TransitionsTestScene();
var layer = new TestLayer1();
s.addChild(layer);
var scene = TransitionsTests[transitionsIdx].transitionFunc(TRANSITION_DURATION, s);
if (scene) {
cc.Director.getInstance().replaceScene(scene);
}
},
step:function (dt) {
},
onEnter:function () {
this._super();
cc.log("Scene 2 onEnter");
},
onEnterTransitionDidFinish:function () {
this._super();
cc.log("Scene 2 onEnterTransitionDidFinish");
},
onExitTransitionDidStart:function () {
this._super();
cc.log("Scene 2 onExitTransitionDidStart");
},
onExit:function () {
this._super();
cc.log("Scene 2 onExit");
}
});
var JumpZoomTransition = function (t, s) {
return cc.TransitionJumpZoom.create(t, s);
};
var FadeTransition = function (t, s) {
return cc.TransitionFade.create(t, s);
};
var FadeWhiteTransition = function (t, s) {
return cc.TransitionFade.create(t, s, cc.white());
};
var FlipXLeftOver = function (t, s) {
return cc.TransitionFlipX.create(t, s, cc.ORIENTATION_LEFT_OVER);
};
var FlipXRightOver = function (t, s) {
return cc.TransitionFlipX.create(t, s, cc.ORIENTATION_RIGHT_OVER);
};
var FlipYUpOver = function (t, s) {
return cc.TransitionFlipY.create(t, s, cc.ORIENTATION_UP_OVER);
};
var FlipYDownOver = function (t, s) {
return cc.TransitionFlipY.create(t, s, cc.ORIENTATION_DOWN_OVER);
};
var FlipAngularLeftOver = function (t, s) {
return cc.TransitionFlipAngular.create(t, s, cc.ORIENTATION_LEFT_OVER);
};
var FlipAngularRightOver = function (t, s) {
return cc.TransitionFlipAngular.create(t, s, cc.ORIENTATION_RIGHT_OVER);
};
var ZoomFlipXLeftOver = function (t, s) {
return cc.TransitionZoomFlipX.create(t, s, cc.ORIENTATION_LEFT_OVER);
};
var ZoomFlipXRightOver = function (t, s) {
return cc.TransitionZoomFlipX.create(t, s, cc.ORIENTATION_RIGHT_OVER);
};
var ZoomFlipYUpOver = function (t, s) {
return cc.TransitionZoomFlipY.create(t, s, cc.ORIENTATION_UP_OVER);
};
var ZoomFlipYDownOver = function (t, s) {
return cc.TransitionZoomFlipY.create(t, s, cc.ORIENTATION_DOWN_OVER);
};
var ZoomFlipAngularLeftOver = function (t, s) {
return cc.TransitionZoomFlipAngular.create(t, s, cc.ORIENTATION_LEFT_OVER);
};
var ZoomFlipAngularRightOver = function (t, s) {
return cc.TransitionZoomFlipAngular.create(t, s, cc.ORIENTATION_RIGHT_OVER);
};
var ShrinkGrowTransition = function (t, s) {
return cc.TransitionShrinkGrow.create(t, s);
};
var RotoZoomTransition = function (t, s) {
return cc.TransitionRotoZoom.create(t, s);
};
var MoveInLTransition = function (t, s) {
return cc.TransitionMoveInL.create(t, s);
};
var MoveInRTransition = function (t, s) {
return cc.TransitionMoveInR.create(t, s);
};
var MoveInTTransition = function (t, s) {
return cc.TransitionMoveInT.create(t, s);
};
var MoveInBTransition = function (t, s) {
return cc.TransitionMoveInB.create(t, s);
};
var SlideInLTransition = function (t, s) {
return cc.TransitionSlideInL.create(t, s);
};
var SlideInRTransition = function (t, s) {
return cc.TransitionSlideInR.create(t, s);
};
var SlideInTTransition = function (t, s) {
return cc.TransitionSlideInT.create(t, s);
};
var SlideInBTransition = function (t, s) {
return cc.TransitionSlideInB.create(t, s);
};
var CCTransitionCrossFade = function (t, s) {
return cc.TransitionCrossFade.create(t, s);
};
var CCTransitionRadialCCW = function (t, s) {
return cc.TransitionRadialCCW.create(t, s);
};
var CCTransitionRadialCW = function (t, s) {
return cc.TransitionRadialCW.create(t, s);
};
var PageTransitionForward = function (t, s) {
cc.Director.getInstance().setDepthTest(true);
return cc.TransitionPageTurn.create(t, s, false);
};
var PageTransitionBackward = function (t, s) {
cc.Director.getInstance().setDepthTest(true);
return cc.TransitionPageTurn.create(t, s, true);
};
var FadeTRTransition = function (t, s) {
return cc.TransitionFadeTR.create(t, s);
};
var FadeBLTransition = function (t, s) {
return cc.TransitionFadeBL.create(t, s);
};
var FadeUpTransition = function (t, s) {
return cc.TransitionFadeUp.create(t, s);
};
var FadeDownTransition = function (t, s) {
return cc.TransitionFadeDown.create(t, s);
};
var TurnOffTilesTransition = function (t, s) {
return cc.TransitionTurnOffTiles.create(t, s);
};
var SplitRowsTransition = function (t, s) {
return cc.TransitionSplitRows.create(t, s);
};
var SplitColsTransition = function (t, s) {
return cc.TransitionSplitCols.create(t, s);
};

View File

@ -0,0 +1,9 @@
//
// Javascript Bindigns helper file
//
// DO NOT ALTER THE ORDER
require('jsb_constants_cocos2d.js');
//require('jsb_constants_chipmunk.js');
require('jsb_constants_gl.js');
//require('jsb_constants_cocosbuilder.js');

View File

@ -0,0 +1,253 @@
//
// Chipmunk defines
//
cp.v = cc.p;
cp._v = cc._p;
cp.vzero = cp.v(0,0);
// Vector: Compatibility with Chipmunk-JS
cp.v.add = cp.vadd;
cp.v.clamp = cp.vclamp;
cp.v.cross = cp.vcross;
cp.v.dist = cp.vdist;
cp.v.distsq = cp.vdistsq;
cp.v.dot = cp.vdot;
cp.v.eql = cp.veql;
cp.v.forangle = cp.vforangle;
cp.v.len = cp.vlength;
cp.v.lengthsq = cp.vlengthsq;
cp.v.lerp = cp.vlerp;
cp.v.lerpconst = cp.vlerpconst;
cp.v.mult = cp.vmult;
cp.v.near = cp.vnear;
cp.v.neg = cp.vneg;
cp.v.normalize = cp.vnormalize;
cp.v.normalize_safe = cp.vnormalize_safe;
cp.v.perp = cp.vperp;
cp.v.project = cp.vproject;
cp.v.rotate = cp.vrotate;
cp.v.rperp = cp.vrperp;
cp.v.slerp = cp.vslerp;
cp.v.slerpconst = cp.vslerpconst;
cp.v.sub = cp.vsub;
cp.v.toangle = cp.vtoangle;
cp.v.unrotate = cp.vunrotate;
/// Initialize an offset box shaped polygon shape.
cp.BoxShape2 = function(body, box)
{
var verts = [
box.l, box.b,
box.l, box.t,
box.r, box.t,
box.r, box.b
];
return new cp.PolyShape(body, verts, cp.vzero);
};
/// Initialize a box shaped polygon shape.
cp.BoxShape = function(body, width, height)
{
var hw = width/2;
var hh = height/2;
return cp.BoxShape2(body, new cp.BB(-hw, -hh, hw, hh));
};
/// Initialize an static body
cp.BodyStatic = function()
{
return new cp.Body(Infinity, Infinity);
};
// "Bounding Box" compatibility with Chipmunk-JS
cp.BB = function(l, b, r, t)
{
return {l:l, b:b, r:r, t:t};
};
// helper function to create a BB
cp.bb = function(l, b, r, t) {
return new cp.BB(l, b, r, t);
};
//
// Some properties
//
// "handle" needed in some cases
Object.defineProperties(cp.Base.prototype,
{
"handle" : {
get : function(){
return this.getHandle();
},
enumerable : true,
configurable : true
}
});
// Properties, for Chipmunk-JS compatibility
// Space properties
Object.defineProperties(cp.Space.prototype,
{
"gravity" : {
get : function(){
return this.getGravity();
},
set : function(newValue){
this.setGravity(newValue);
},
enumerable : true,
configurable : true
},
"iterations" : {
get : function(){
return this.getIterations();
},
set : function(newValue){
this.setIterations(newValue);
},
enumerable : true,
configurable : true
},
"damping" : {
get : function(){
return this.getDamping();
},
set : function(newValue){
this.setDamping(newValue);
},
enumerable : true,
configurable : true
},
"staticBody" : {
get : function(){
return this.getStaticBody();
},
enumerable : true,
configurable : true
},
"idleSpeedThreshold" : {
get : function(){
return this.getIdleSpeedThreshold();
},
set : function(newValue){
this.setIdleSpeedThreshold(newValue);
},
enumerable : true,
configurable : true
},
"sleepTimeThreshold": {
get : function(){
return this.getSleepTimeThreshold();
},
set : function(newValue){
this.setSleepTimeThreshold(newValue);
},
enumerable : true,
configurable : true
},
"collisionSlop": {
get : function(){
return this.getCollisionSlop();
},
set : function(newValue){
this.setCollisionSlop(newValue);
},
enumerable : true,
configurable : true
},
"collisionBias": {
get : function(){
return this.getCollisionBias();
},
set : function(newValue){
this.setCollisionBias(newValue);
},
enumerable : true,
configurable : true
},
"collisionPersistence": {
get : function(){
return this.getCollisionPersistence();
},
set : function(newValue){
this.setCollisionPersistence(newValue);
},
enumerable : true,
configurable : true
},
"enableContactGraph": {
get : function(){
return this.getEnableContactGraph();
},
set : function(newValue){
this.setEnableContactGraph(newValue);
},
enumerable : true,
configurable : true
}
});
// Body properties
Object.defineProperties(cp.Body.prototype,
{
"a" : {
get : function(){
return this.getAngle();
},
set : function(newValue){
this.setAngle(newValue);
},
enumerable : true,
configurable : true
},
"w" : {
get : function(){
return this.getAngVel();
},
set : function(newValue){
this.setAngVel(newValue);
},
enumerable : true,
configurable : true
},
"p" : {
get : function(){
return this.getPos();
},
set : function(newValue){
this.setPos(newValue);
},
enumerable : true,
configurable : true
},
"v" : {
get : function(){
return this.getVel();
},
set : function(newValue){
this.setVel(newValue);
},
enumerable : true,
configurable : true
},
"i" : {
get : function(){
return this.getMoment();
},
set : function(newValue){
this.setMoment(newValue);
},
enumerable : true,
configurable : true
}
});

View File

@ -0,0 +1,344 @@
//
// cocos2d constants
//
//
// Point
//
cc.p = function( x, y )
{
return {x:x, y:y};
};
cc.g = cc.p;
cc.log = cc.log || log;
cc.DIRECTOR_PROJECTION_2D = 0;
cc.DIRECTOR_PROJECTION_3D = 1;
cc.TEXTURE_PIXELFORMAT_RGBA8888 = 0;
cc.TEXTURE_PIXELFORMAT_RGB888 = 1;
cc.TEXTURE_PIXELFORMAT_RGB565 = 2;
cc.TEXTURE_PIXELFORMAT_A8 = 3;
cc.TEXTURE_PIXELFORMAT_I8 = 4;
cc.TEXTURE_PIXELFORMAT_AI88 = 5;
cc.TEXTURE_PIXELFORMAT_RGBA4444 = 6;
cc.TEXTURE_PIXELFORMAT_RGB5A1 = 7;
cc.TEXTURE_PIXELFORMAT_PVRTC4 = 8;
cc.TEXTURE_PIXELFORMAT_PVRTC4 = 9;
cc.TEXTURE_PIXELFORMAT_DEFAULT = cc.TEXTURE_PIXELFORMAT_RGBA8888;
cc.TEXT_ALIGNMENT_LEFT = 0;
cc.TEXT_ALIGNMENT_CENTER = 1;
cc.TEXT_ALIGNMENT_RIGHT = 2;
cc.VERTICAL_TEXT_ALIGNMENT_TOP = 0;
cc.VERTICAL_TEXT_ALIGNMENT_CENTER = 1;
cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM = 2;
cc.IMAGE_FORMAT_JPEG = 0;
cc.IMAGE_FORMAT_PNG = 0;
cc.PROGRESS_TIMER_TYPE_RADIAL = 0;
cc.PROGRESS_TIMER_TYPE_BAR = 1;
cc.PARTICLE_TYPE_FREE = 0;
cc.PARTICLE_TYPE_RELATIVE = 1;
cc.PARTICLE_TYPE_GROUPED = 2;
cc.PARTICLE_DURATION_INFINITY = -1;
cc.PARTICLE_MODE_GRAVITY = 0;
cc.PARTICLE_MODE_RADIUS = 1;
cc.PARTICLE_START_SIZE_EQUAL_TO_END_SIZE = -1;
cc.PARTICLE_START_RADIUS_EQUAL_TO_END_RADIUS = -1;
cc.RED = {r:255, g:0, b:0};
cc.GREEN = {r:0, g:255, b:0};
cc.BLUE = {r:0, g:0, b:255};
cc.BLACK = {r:0, g:0, b:0};
cc.WHITE = {r:255, g:255, b:255};
cc.POINT_ZERO = {x:0, y:0};
cc._reuse_p0 = {x:0, y:0};
cc._reuse_p1 = {x:0, y:0};
cc._reuse_p_index = 0;
cc._reuse_color3b = {r:255, g:255, b:255 };
cc._reuse_color4b = {r:255, g:255, b:255, a:255 };
cc._reuse_grid = cc.g(0,0);
//
// Color 3B
//
cc.c3b = function( r, g, b )
{
return {r:r, g:g, b:b };
};
cc._c3b = function( r, g, b )
{
cc._reuse_color3b.r = r;
cc._reuse_color3b.g = g;
cc._reuse_color3b.b = b;
return cc._reuse_color3b;
};
// compatibility
cc.c3 = cc.c3b;
cc._c3 = cc._c3b;
//
// Color 4B
//
cc.c4b = function( r, g, b, a )
{
return {r:r, g:g, b:b, a:a };
};
cc._c4b = function( r, g, b, a )
{
cc._reuse_color4b.r = r;
cc._reuse_color4b.g = g;
cc._reuse_color4b.b = b;
cc._reuse_color4b.a = a;
return cc._reuse_color4b;
};
// compatibility
cc.c4 = cc.c4b;
cc._c4 = cc._c4b;
//
// Color 4F
//
cc.c4f = function( r, g, b, a )
{
return {r:r, g:g, b:b, a:a };
};
cc._p = function( x, y )
{
if( cc._reuse_p_index === 0 ) {
cc._reuse_p0.x = x;
cc._reuse_p0.y = y;
cc._reuse_p_index = 1;
return cc._reuse_p0;
} else {
cc._reuse_p1.x = x;
cc._reuse_p1.y = y;
cc._reuse_p_index = 0;
return cc._reuse_p1;
}
};
//
// Grid
//
cc._g = function( x, y )
{
cc._reuse_grid.x = x;
cc._reuse_grid.y = y;
return cc._reuse_grid;
};
//
// Size
//
cc.size = function(w,h)
{
return {width:w, height:h};
};
//
// Rect
//
cc.rect = function(x,y,w,h)
{
return {x:x, y:y, width:w, height:h};
};
// dump config info, but only in debug mode
cc.dumpConfig = function()
{
if( cc.config.debug ) {
for( var i in cc.config )
cc.log( i + " = " + cc.config[i] );
}
};
//
// MenuItemToggle
//
cc.MenuItemToggle.create = function( /* var args */) {
var n = arguments.length;
if (typeof arguments[n-1] === 'function') {
var args = Array.prototype.slice.call(arguments);
var func = args.pop();
var obj = args.pop();
// create it with arguments,
var item = cc.MenuItemToggle._create.apply(this, args);
// then set the callback
item.setCallback(obj, func);
return item;
} else {
return cc.MenuItemToggle._create.apply(this, arguments);
}
};
/**
* Associates a base class with a native superclass
* @function
* @param {object} jsobj subclass
* @param {object} klass superclass
*/
cc.associateWithNative = function( jsobj, superclass ) {
var native = new superclass();
__associateObjWithNative( jsobj, native );
};
// XXX Should be done in native
cc.rectIntersectsRect = function( rectA, rectB )
{
var bool = ! ( rectA.x > rectB.x + rectB.width ||
rectA.x + rectA.width < rectB.x ||
rectA.y > rectB.y +rectB.height ||
rectA.y + rectA.height < rectB.y );
return bool;
};
//
// Array: for cocos2d-html5 compatibility
//
cc.ArrayRemoveObject = function (arr, delObj) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] == delObj) {
arr.splice(i, 1);
}
}
};
//
// Google "subclasses"
// borrowed from closure library
//
var goog = goog || {}; // Check to see if already defined in current scope
goog.inherits = function (childCtor, parentCtor) {
/** @constructor */
function tempCtor() {};
tempCtor.prototype = parentCtor.prototype;
childCtor.superClass_ = parentCtor.prototype;
childCtor.prototype = new tempCtor();
childCtor.prototype.constructor = childCtor;
// Copy "static" method, but doesn't generate subclasses.
// for( var i in parentCtor ) {
// childCtor[ i ] = parentCtor[ i ];
// }
};
goog.base = function(me, opt_methodName, var_args) {
var caller = arguments.callee.caller;
if (caller.superClass_) {
// This is a constructor. Call the superclass constructor.
ret = caller.superClass_.constructor.apply( me, Array.prototype.slice.call(arguments, 1));
// XXX: SpiderMonkey bindings extensions
// __associateObjWithNative( me, ret );
return ret;
}
var args = Array.prototype.slice.call(arguments, 2);
var foundCaller = false;
for (var ctor = me.constructor;
ctor; ctor = ctor.superClass_ && ctor.superClass_.constructor) {
if (ctor.prototype[opt_methodName] === caller) {
foundCaller = true;
} else if (foundCaller) {
return ctor.prototype[opt_methodName].apply(me, args);
}
}
// If we did not find the caller in the prototype chain,
// then one of two things happened:
// 1) The caller is an instance method.
// 2) This method was not called by the right caller.
if (me[opt_methodName] === caller) {
return me.constructor.prototype[opt_methodName].apply(me, args);
} else {
throw Error(
'goog.base called from a method of one name ' +
'to a method of a different name');
}
};
//
// Simple subclass
//
cc.Class = function(){};
cc.Class.extend = function (prop) {
var _super = this.prototype;
// Instantiate a base class (but only create the instance,
// don't run the init constructor)
initializing = true;
var prototype = new this();
initializing = false;
fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
// Copy the properties over onto the new prototype
for (var name in prop) {
// Check if we're overwriting an existing function
prototype[name] = typeof prop[name] == "function" &&
typeof _super[name] == "function" && fnTest.test(prop[name]) ?
(function (name, fn) {
return function () {
var tmp = this._super;
// Add a new ._super() method that is the same method
// but on the super-class
this._super = _super[name];
// The method only need to be bound temporarily, so we
// remove it when we're done executing
var ret = fn.apply(this, arguments);
this._super = tmp;
return ret;
};
})(name, prop[name]) :
prop[name];
}
// The dummy class constructor
function Class() {
// All construction is actually done in the init method
if (!initializing && this.ctor)
this.ctor.apply(this, arguments);
}
// Populate our constructed prototype object
Class.prototype = prototype;
// Enforce the constructor to be what we expect
Class.prototype.constructor = Class;
// And make this class extendable
Class.extend = arguments.callee;
return Class;
};
cc.Node.extend = cc.Class.extend;
cc.Layer.extend = cc.Class.extend;
cc.LayerGradient.extend = cc.Class.extend;
cc.LayerColor.extend = cc.Class.extend;
cc.Sprite.extend = cc.Class.extend;
cc.MenuItemFont.extend = cc.Class.extend;
cc.Scene.extend = cc.Class.extend;

View File

@ -0,0 +1,118 @@
//
// CocosBuilder definitions
//
cc.Reader = {};
var _ccbGlobalContext = this;
cc.Reader.load = function(file, owner, parentSize)
{
// Load the node graph using the correct function
var reader = cc._Reader.create();
var node;
if (owner && parentSize)
{
node = reader.load(file, owner, parentSize);
}
else if (owner)
{
node = reader.load(file,owner);
}
else
{
node = reader.load(file);
}
// Assign owner callbacks & member variables
if (owner)
{
// Callbacks
var ownerCallbackNames = reader.getOwnerCallbackNames();
var ownerCallbackNodes = reader.getOwnerCallbackNodes();
for (var i = 0; i < ownerCallbackNames.length; i++)
{
var callbackName = ownerCallbackNames[i];
var callbackNode = ownerCallbackNodes[i];
callbackNode.setCallback(owner, owner[callbackName]);
}
// Variables
var ownerOutletNames = reader.getOwnerOutletNames();
var ownerOutletNodes = reader.getOwnerOutletNodes();
for (var i = 0; i < ownerOutletNames.length; i++)
{
var outletName = ownerOutletNames[i];
var outletNode = ownerOutletNodes[i];
owner[outletName] = outletNode;
}
}
var nodesWithAnimationManagers = reader.getNodesWithAnimationManagers();
var animationManagersForNodes = reader.getAnimationManagersForNodes();
// Attach animation managers to nodes and assign root node callbacks and member variables
for (var i = 0; i < nodesWithAnimationManagers.length; i++)
{
var innerNode = nodesWithAnimationManagers[i];
var animationManager = animationManagersForNodes[i];
innerNode.animationManager = animationManager;
var documentControllerName = animationManager.getDocumentControllerName();
if (!documentControllerName) continue;
// Create a document controller
var controller = new _ccbGlobalContext[documentControllerName]();
controller.controllerName = documentControllerName;
innerNode.controller = controller;
controller.rootNode = innerNode;
// Callbacks
var documentCallbackNames = animationManager.getDocumentCallbackNames();
var documentCallbackNodes = animationManager.getDocumentCallbackNodes();
for (var j = 0; j < documentCallbackNames.length; j++)
{
var callbackName = documentCallbackNames[j];
var callbackNode = documentCallbackNodes[j];
callbackNode.setCallback(controller, controller[callbackName]);
}
// Variables
var documentOutletNames = animationManager.getDocumentOutletNames();
var documentOutletNodes = animationManager.getDocumentOutletNodes();
for (var j = 0; j < documentOutletNames.length; j++)
{
var outletName = documentOutletNames[j];
var outletNode = documentOutletNodes[j];
controller[outletName] = outletNode;
}
if (typeof(controller.onDidLoadFromCCB) == "function")
{
controller.onDidLoadFromCCB();
}
}
return node;
}
cc.Reader.loadAsScene = function(file, owner, parentSize)
{
var node = cc.Reader.load(file, owner, parentSize);
var scene = cc.Scene.create();
scene.addChild( node );
return scene;
}

View File

@ -0,0 +1,23 @@
//
// OpenGL defines
//
var gl = gl || {};
gl.NEAREST = 0x2600;
gl.LINEAR = 0x2601;
gl.REPEAT = 0x2901;
gl.CLAMP_TO_EDGE = 0x812F;
gl.CLAMP_TO_BORDER = 0x812D;
gl.LINEAR_MIPMAP_NEAREST = 0x2701;
gl.NEAREST_MIPMAP_NEAREST = 0x2700;
gl.ZERO = 0;
gl.ONE = 1;
gl.SRC_COLOR = 0x0300;
gl.ONE_MINUS_SRC_COLOR = 0x0301;
gl.SRC_ALPHA = 0x0302;
gl.ONE_MINUS_SRC_ALPHA = 0x0303;
gl.DST_ALPHA = 0x0304;
gl.ONE_MINUS_DST_ALPHA = 0x0305;
gl.DST_COLOR = 0x0306;
gl.ONE_MINUS_DST_COLOR = 0x0307;
gl.SRC_ALPHA_SATURATE = 0x0308;

View File

@ -0,0 +1 @@
3a20f2538a26a05776e330b00abbf48ef1dc42cc

View File

@ -0,0 +1 @@
2aaf84affb08908ea5aa5fd7ce5de973b88109bc

View File

@ -0,0 +1 @@
d19440ea298cab294dea34a8daa96a6067490b25

View File

@ -0,0 +1 @@
a71a0b77382bfe31a77a6a8fd89ca75e71f921bf

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1 @@
0a08f47624fb92eef7de9fed051d92a25e3c6ff8

View File

@ -0,0 +1 @@
365a14b28310b73a048597cc8d87609975705172

View File

@ -0,0 +1 @@
9246a8bc975c764e4aa71f54a50d5f4e4bce7a18

View File

@ -0,0 +1 @@
6869c5352bc6510dba54803f5f4459b0a6a3fcf2

View File

@ -0,0 +1 @@
d13ddb0931c1772127b38010990140adce837bc8

View File

@ -0,0 +1,282 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>texture</key>
<dict>
<key>width</key>
<integer>512</integer>
<key>height</key>
<integer>256</integer>
</dict>
<key>frames</key>
<dict>
<key>grossini_dance_01.png</key>
<dict>
<key>x</key>
<integer>347</integer>
<key>y</key>
<integer>1</integer>
<key>width</key>
<integer>51</integer>
<key>height</key>
<integer>109</integer>
<key>offsetX</key>
<real>0</real>
<key>offsetY</key>
<real>-1</real>
<key>originalWidth</key>
<integer>85</integer>
<key>originalHeight</key>
<integer>-121</integer>
</dict>
<key>grossini_dance_02.png</key>
<dict>
<key>x</key>
<integer>215</integer>
<key>y</key>
<integer>111</integer>
<key>width</key>
<integer>63</integer>
<key>height</key>
<integer>109</integer>
<key>offsetX</key>
<real>-6</real>
<key>offsetY</key>
<real>-1</real>
<key>originalWidth</key>
<integer>85</integer>
<key>originalHeight</key>
<integer>-121</integer>
</dict>
<key>grossini_dance_03.png</key>
<dict>
<key>x</key>
<integer>151</integer>
<key>y</key>
<integer>111</integer>
<key>width</key>
<integer>63</integer>
<key>height</key>
<integer>109</integer>
<key>offsetX</key>
<real>-6</real>
<key>offsetY</key>
<real>-1</real>
<key>originalWidth</key>
<integer>85</integer>
<key>originalHeight</key>
<integer>-121</integer>
</dict>
<key>grossini_dance_04.png</key>
<dict>
<key>x</key>
<integer>1</integer>
<key>y</key>
<integer>111</integer>
<key>width</key>
<integer>74</integer>
<key>height</key>
<integer>109</integer>
<key>offsetX</key>
<real>-0.5</real>
<key>offsetY</key>
<real>-1</real>
<key>originalWidth</key>
<integer>85</integer>
<key>originalHeight</key>
<integer>-121</integer>
</dict>
<key>grossini_dance_05.png</key>
<dict>
<key>x</key>
<integer>76</integer>
<key>y</key>
<integer>111</integer>
<key>width</key>
<integer>74</integer>
<key>height</key>
<integer>109</integer>
<key>offsetX</key>
<real>-0.5</real>
<key>offsetY</key>
<real>-1</real>
<key>originalWidth</key>
<integer>85</integer>
<key>originalHeight</key>
<integer>-121</integer>
</dict>
<key>grossini_dance_06.png</key>
<dict>
<key>x</key>
<integer>399</integer>
<key>y</key>
<integer>1</integer>
<key>width</key>
<integer>63</integer>
<key>height</key>
<integer>109</integer>
<key>offsetX</key>
<real>-6</real>
<key>offsetY</key>
<real>-1</real>
<key>originalWidth</key>
<integer>85</integer>
<key>originalHeight</key>
<integer>-121</integer>
</dict>
<key>grossini_dance_07.png</key>
<dict>
<key>x</key>
<integer>105</integer>
<key>y</key>
<integer>1</integer>
<key>width</key>
<integer>63</integer>
<key>height</key>
<integer>109</integer>
<key>offsetX</key>
<real>-6</real>
<key>offsetY</key>
<real>-1</real>
<key>originalWidth</key>
<integer>85</integer>
<key>originalHeight</key>
<integer>-121</integer>
</dict>
<key>grossini_dance_08.png</key>
<dict>
<key>x</key>
<integer>1</integer>
<key>y</key>
<integer>1</integer>
<key>width</key>
<integer>51</integer>
<key>height</key>
<integer>109</integer>
<key>offsetX</key>
<real>0</real>
<key>offsetY</key>
<real>-1</real>
<key>originalWidth</key>
<integer>85</integer>
<key>originalHeight</key>
<integer>-121</integer>
</dict>
<key>grossini_dance_09.png</key>
<dict>
<key>x</key>
<integer>295</integer>
<key>y</key>
<integer>1</integer>
<key>width</key>
<integer>51</integer>
<key>height</key>
<integer>109</integer>
<key>offsetX</key>
<real>0</real>
<key>offsetY</key>
<real>-1</real>
<key>originalWidth</key>
<integer>85</integer>
<key>originalHeight</key>
<integer>-121</integer>
</dict>
<key>grossini_dance_10.png</key>
<dict>
<key>x</key>
<integer>232</integer>
<key>y</key>
<integer>1</integer>
<key>width</key>
<integer>62</integer>
<key>height</key>
<integer>109</integer>
<key>offsetX</key>
<real>5.5</real>
<key>offsetY</key>
<real>-1</real>
<key>originalWidth</key>
<integer>85</integer>
<key>originalHeight</key>
<integer>-121</integer>
</dict>
<key>grossini_dance_11.png</key>
<dict>
<key>x</key>
<integer>169</integer>
<key>y</key>
<integer>1</integer>
<key>width</key>
<integer>62</integer>
<key>height</key>
<integer>109</integer>
<key>offsetX</key>
<real>5.5</real>
<key>offsetY</key>
<real>-1</real>
<key>originalWidth</key>
<integer>85</integer>
<key>originalHeight</key>
<integer>-121</integer>
</dict>
<key>grossini_dance_12.png</key>
<dict>
<key>x</key>
<integer>279</integer>
<key>y</key>
<integer>111</integer>
<key>width</key>
<integer>51</integer>
<key>height</key>
<integer>106</integer>
<key>offsetX</key>
<real>0</real>
<key>offsetY</key>
<real>-2.5</real>
<key>originalWidth</key>
<integer>85</integer>
<key>originalHeight</key>
<integer>-121</integer>
</dict>
<key>grossini_dance_13.png</key>
<dict>
<key>x</key>
<integer>53</integer>
<key>y</key>
<integer>1</integer>
<key>width</key>
<integer>51</integer>
<key>height</key>
<integer>109</integer>
<key>offsetX</key>
<real>0</real>
<key>offsetY</key>
<real>-1</real>
<key>originalWidth</key>
<integer>85</integer>
<key>originalHeight</key>
<integer>-121</integer>
</dict>
<key>grossini_dance_14.png</key>
<dict>
<key>x</key>
<integer>331</integer>
<key>y</key>
<integer>111</integer>
<key>width</key>
<integer>51</integer>
<key>height</key>
<integer>106</integer>
<key>offsetX</key>
<real>0</real>
<key>offsetY</key>
<real>-2.5</real>
<key>originalWidth</key>
<integer>85</integer>
<key>originalHeight</key>
<integer>-121</integer>
</dict>
</dict>
</dict>
</plist>

View File

@ -0,0 +1 @@
aec1c0a8c8068377fddca5ddd32084d8c3c3c419

View File

@ -0,0 +1 @@
38e3a5fabac55b5649842cb35930af7594f093ef

View File

@ -0,0 +1 @@
2685fbcab626d939a8e2ea65b05a8a82beb90afa

View File

@ -0,0 +1 @@
38e3a5fabac55b5649842cb35930af7594f093ef

View File

@ -0,0 +1 @@
2685fbcab626d939a8e2ea65b05a8a82beb90afa

View File

@ -0,0 +1 @@
197f4c7204f12af28120d3506524f0ac051b624d

View File

@ -0,0 +1 @@
197f4c7204f12af28120d3506524f0ac051b624d

View File

@ -0,0 +1 @@
500d95937f3fd81659da66d2099b6c80d988a6b5

View File

@ -0,0 +1 @@
ebb3361a7a53d63ab60931a48bedc3ec8ccfe206

View File

@ -0,0 +1 @@
ab579da81872bb45c6e102dc2dbf6ee9e8082f75

View File

@ -0,0 +1 @@
cce195a8ee10fc4fd7b5acf048ab3e04b0750685

View File

@ -0,0 +1 @@
c2eabd7cd8b62d39967387739fe05799de4ca764

View File

@ -0,0 +1 @@
abc899cd55086105f439df7a6d01db84168aebb5

View File

@ -0,0 +1 @@
9d2adf428a20b8facb57c0b3dc8dd782c74e27ea

View File

@ -0,0 +1 @@
112328fdb03b8966c8cb7b62a5fc51ce0d4570b1

View File

@ -0,0 +1 @@
9975e4961272d5bda6d5f3bbd61ea0fc02222199

View File

@ -0,0 +1 @@
796a33e41fb8a78b122fdf0d8a626510629bbb80

View File

@ -0,0 +1 @@
8d997c0f9ffd94aa8868b58c9edd1b0c667c468a

View File

@ -0,0 +1 @@
ee5dba70cef2d704598a1ada6e1ddce3bc6afb9f

View File

@ -0,0 +1 @@
3988cfdf6548eaab2f408422c470140b7e74f464

View File

@ -0,0 +1 @@
b62acc9fb494f76ea75df3ec90cb0e53a58b9348

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>chinese1</key>
<string>美好的一天</string>
<key>japanese</key>
<string>良い一日を</string>
<key>spanish</key>
<string>Buen día</string>
</dict>
</plist>

Some files were not shown because too many files have changed in this diff Show More