issue #5, add CCLayer.h, add @todo

This commit is contained in:
Walzer 2010-07-09 03:26:56 +00:00
parent 46da55d4a0
commit fdcbafda0f
4 changed files with 181 additions and 77 deletions

View File

@ -40,8 +40,6 @@ All features from CCNode are valid, plus the following features:
class CCAtlasNode : public CCNode, public CCRGBAProtocol, public CCTextureProtocol
{
protected:
// texture atlas
//CCTextureAtlas *textureAtlas_;
// chars per row
int m_iItemsPerRow;
@ -58,12 +56,6 @@ protected:
// height of each char
int m_iItemHeight;
// blend function
//ccBlendFunc blendFunc_;
// texture RGBA.
//GLubyte opacity_;
//ccColor3B color_;
ccColor3B m_tColorUnmodified;
bool m_bOpacityModifyRGB;

140
cocos2dx/include/CCLayer.h Normal file
View File

@ -0,0 +1,140 @@
/****************************************************************************
Copyright (c) 2010 cocos2d-x.org
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.
****************************************************************************/
#ifndef __CCLAYER_H__
#define __CCLAYER_H__
#include "Cocos2dDefine.h"
#include "CCNode.h"
/// @todo CCTexture2D.h
//#include "CCProtocols.h"
//
// CCLayer
//
/** CCLayer is a subclass of CCNode that implements the TouchEventsDelegate protocol.
All features from CCNode are valid, plus the following new features:
- It can receive iPhone Touches
- It can receive Accelerometer input
*/
/// @todo public UIAccelerometerDelegate, public CCStandardTouchDelegate, public CCTargetedTouchDelegate
class CCLayer : public CCNode//, public UIAccelerometerDelegate, public CCStandardTouchDelegate, public CCTargetedTouchDelegate
{
public:
/** If isTouchEnabled, this method is called onEnter. Override it to change the
way CCLayer receives touch events.
( Default: [[TouchDispatcher sharedDispatcher] addStandardDelegate:self priority:0] )
Example:
-(void) registerWithTouchDispatcher
{
[[TouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:INT_MIN+1 swallowsTouches:YES];
}
@since v0.8.0
*/
void registerWithTouchDispatcher(void);
/** whether or not it will receive Touch events.
You can enable / disable touch events with this property.
Only the touches of this node will be affected. This "method" is not propagated to it's children.
@since v0.8.1
*/
CCX_DECLARE_VAR_READWRITE_INLINE(bool, m_bIsTouchEnabled, IsTouchEnabled)
/** whether or not it will receive Accelerometer events
You can enable / disable accelerometer events with this property.
@since v0.8.1
*/
CCX_DECLARE_VAR_READWRITE(bool, m_bIsAccelerometerEnabled, IsAccelerometerEnabled)
};
//
// CCColorLayer
//
/** CCColorLayer is a subclass of CCLayer that implements the CCRGBAProtocol protocol.
All features from CCLayer are valid, plus the following new features:
- opacity
- RGB colors
*/
/// @todo public CCRGBAProtocol, public CCBlendProtocol
class CCColorLayer : public CCLayer //, public CCRGBAProtocol, public CCBlendProtocol
{
protected:
GLfloat m_fSquareVertices[4 * 2];
GLubyte m_cSquareColors[4 * 4];
public:
/** creates a CCLayer with color, width and height */
static void* layerWithColorWidthHeight(ccColor4B color, GLfloat width, GLfloat height);
/** creates a CCLayer with color. Width and height are the window size. */
static void* layerWithColor(ccColor4B color);
/** initializes a CCLayer with color, width and height */
void* initWithColorWidthHeight(ccColor4B color, GLfloat width, GLfloat height);
/** initializes a CCLayer with color. Width and height are the window size. */
void* initWithColor(ccColor4B color);
/** change width */
void changeWidth(GLfloat w);
/** change height */
void changeHeight(GLfloat h);
/** change width and height
@since v0.8
*/
void changeWidthAndHeight(GLfloat w ,GLfloat h);
/** Opacity: conforms to CCRGBAProtocol protocol */
CCX_DECLARE_VAR_READONLY(GLubyte, m_cOpacity, Opacity)
/** Opacity: conforms to CCRGBAProtocol protocol */
CCX_DECLARE_VAR_READONLY(ccColor3B, m_tColor, Color)
/** BlendFunction. Conforms to CCBlendProtocol protocol */
CCX_DECLARE_VAR_READWRITE(ccBlendFunc, m_tBlendFunc, BlendFunc)
};
/** CCMultipleLayer is a CCLayer with the ability to multiplex it's children.
Features:
- It supports one or more children
- Only one children will be active a time
*/
class CCMultiplexLayer : public CCLayer
{
protected:
unsigned int enabledLayer;
NSMutableArray *layers;
public:
/** creates a CCMultiplexLayer with one or more layers using a variable argument list. */
static void* layerWithLayers(CCLayer* layer, ... );
/** initializes a MultiplexLayer with one or more layers using a variable argument list. */
void* initWithLayers(CCLayer* layer, va_list params);
/** switches to a certain layer indexed by n.
The current (old) layer will be removed from it's parent with 'cleanup:YES'.
*/
void switchTo(unsigned int n);
/** release the current layer and switches to another layer indexed by n.
The current (old) layer will be removed from it's parent with 'cleanup:YES'.
*/
void switchToAndReleaseMe(unsigned int n);
};
#endif

View File

@ -96,62 +96,6 @@ class CCNode{
protected:
// rotation angle
//float m_fRotation;
// scaling factors
//float m_fScaleX, m_fScaleY;
// position of the node
//CGPoint m_tPosition;
// is visible
//bool m_bIsVisible;
// anchor point in pixels
//CGPoint m_tAnchorPointInPixels;
// anchor point normalized
//CGPoint m_tAnchorPoint;
// If true the transformtions will be relative to (-transform.x, -transform.y).
// Sprites, Labels and any other "small" object uses it.
// Scenes, Layers and other "whole screen" object don't use it.
//bool m_bIsRelativeAnchorPoint;
// untransformed size of the node
//CGSize m_tContentSize;
// transform
//CGAffineTransform m_tTransform, m_tInverse;
// openGL real Z vertex
//float m_fVertexZ;
// a Camera
//CCCamera * m_pCamera;
// a Grid
//CCGridBase * m_pGrid;
// z-order value
//int m_iZOrder;
// array of children
//NSMutableArray * m_pChildren;
// weakref to parent
//CCNode * m_pParent;
// a tag. any number you want to assign to the node
//int m_iTag;
// user data field
//void *m_pUserData;
// Is running
//bool m_bIsRunning;
#ifdef CCX_NODE_TRANSFORM_USING_AFFINE_MATRIX
GLfloat m_pTransformGL[16];
#endif
@ -378,13 +322,14 @@ public:
@since v0.7.1
@return An Action pointer
*/
// CCAction* runAction(CCAction* action);
/// @todo CCAction* runAction(CCAction* action);
/** Removes all actions from the running action list */
void stopAllActions(void);
/** Removes an action from the running action list */
// void stopAction(CCAction* action);
/// @todo void stopAction(CCAction* action);
/** Removes an action from the running action list given its tag
@since v0.7.1
@ -395,7 +340,7 @@ public:
@since v0.7.1
@return the Action the with the given tag
*/
// CCAction* getActionByTag(int tag);
/// @todo CCAction* getActionByTag(int tag);
/** Returns the numbers of actions that are running plus the ones that are schedule to run (actions in actionsToAdd and actions arrays).
* Composable actions are counted as 1 action. Example:
@ -408,7 +353,7 @@ public:
// timers
/** check whether a selector is scheduled. */
// bool isScheduled(SEL selector);
/// @todo bool isScheduled(SEL selector);
/** schedules the "update" method. It will use the order number 0. This method will be called every frame.
Scheduled methods with a lower order value will be called before the ones that have a higher order value.
@ -435,16 +380,16 @@ public:
/** schedules a selector.
The scheduled selector will be ticked every frame
*/
// void schedule(SEL selector);
/// @todo void schedule(SEL selector);
/** schedules a custom selector with an interval time in seconds.
If time is 0 it will be ticked every frame.
If tiem is 0, it is recommended to use 'scheduleUpdate' instead.
*/
// void schedule(SEL selector, ccTime seconds);
/// @todo void schedule(SEL selector, ccTime seconds);
/** unschedules a custom selector.*/
// void unschedule(SEL selector);
/// @todo void unschedule(SEL selector);
/** unschedule all scheduled selectors: custom selectors, and the 'update' selector.
Actions are not affected by this method.
@ -467,22 +412,22 @@ public:
/** Returns the local affine transform matrix
@since v0.7.1
*/
// CGAffineTransform nodeToParentTransform(void);
/// @todo CGAffineTransform nodeToParentTransform(void);
/** Returns the inverse local affine transform matrix
@since v0.7.1
*/
// CGAffineTransform parentToNodeTransform(void);
/// @todo CGAffineTransform parentToNodeTransform(void);
/** Retrusn the world affine transform matrix
@since v0.7.1
*/
// CGAffineTransform nodeToWorldTransform(void);
/// @todo CGAffineTransform nodeToWorldTransform(void);
/** Returns the inverse world affine transform matrix
@since v0.7.1
*/
// CGAffineTransform worldToNodeTransform(void);
/// @todo CGAffineTransform worldToNodeTransform(void);
/** converts a world coordinate to local coordinate
@since v0.7.1
@ -505,12 +450,12 @@ public:
/** convenience methods which take a UITouch instead of CGPoint
@since v0.7.1
*/
// CGPoint convertTouchToNodeSpace(UITouch * touch);
/// @todo CGPoint convertTouchToNodeSpace(UITouch * touch);
/** converts a UITouch (world coordinates) into a local coordiante. This method is AR (Anchor Relative).
@since v0.7.1
*/
// CGPoint convertTouchToNodeSpaceAR:(UITouch * touch);
/// @todo CGPoint convertTouchToNodeSpaceAR:(UITouch * touch);
};

View File

@ -0,0 +1,27 @@
/****************************************************************************
Copyright (c) 2010 cocos2d-x.org
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.
****************************************************************************/
#include "CCLayer.h"
using namespace std;