2012-01-24 16 views
1

私は2つのvoid関数(ラジオボタンを実装しようとしています)を持っています。値を交換することによって3番目の関数に値を送ることができます。その関数はmain関数に値を返しますか? MY MyScene.hファイルの関数は、2つの異なる関数からそれぞれ1つずつ2つの引数を受け取ることができますか?

CODE

#ifndef __MY_SCENE_H__ 
#define __MY_SCENE_H__ 

#include "cocos2d.h" 
USING_NS_CC; 

class MyScene : public cocos2d::CCLayerColor 
{ 
public: 
    // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone 
    virtual bool init(); 

    // there's no 'id' in cpp, so we recommand to return the exactly class pointer 
    static cocos2d::CCScene* scene(); 


    CCMenuItemToggle *R; 

    CCMenuItemToggle *L; 

    // a selector callback 
    void swapL(CCObject *sender); 
    void swapR(CCObject *sender); 

    // implement the "static node()" method manually 
    LAYER_NODE_FUNC(MyScene); 
}; 

#endif // __HELLOWORLD_SCENE_H__ 

MY MyScene.cppファイルのコード

#include "MyScene.h" 

USING_NS_CC; 

CCScene* MyScene::scene() 
{ 
    // 'scene' is an autorelease object 
    CCScene *scene = CCScene::node(); 

    // 'layer' is an autorelease object 
    MyScene *layer = MyScene::node(); 

    // add layer as a child to scene 
    scene->addChild(layer); 

    // return the scene 
    return scene; 
} 

// on "init" you need to initialize your instance 
bool MyScene::init() 
{ 


    ////////////////////////////// 
    // 1. super init first 
    if (!CCLayerColor::initWithColor(ccc4(255,255,255,255))) 
    { 
     return false; 
    } 

    ////////////////////////////// 
    // 2. add your codes below... 

    CCSize WinSize= CCDirector::sharedDirector()->getWinSizeInPixels(); 

    CCSprite * fish=CCSprite::spriteWithFile("fish_bg.png"); 
    fish->setPosition(CCPointZero); 
    fish->setAnchorPoint(CCPointZero); 
    fish->setScaleX(WinSize.width/480); 
    fish->setScaleY(WinSize.height/395); 
    this->addChild(fish,0,0); 


    CCSprite * on1=CCSprite::spriteWithFile("on.png"); 
    CCSprite * on2=CCSprite::spriteWithFile("on.png"); 
    CCSprite * on3=CCSprite::spriteWithFile("on.png"); 
    CCSprite * on4=CCSprite::spriteWithFile("on.png"); 

    CCSprite * off1=CCSprite::spriteWithFile("off.png"); 
    CCSprite * off2=CCSprite::spriteWithFile("off.png"); 
    CCSprite * off3=CCSprite::spriteWithFile("off.png"); 
    CCSprite * off4=CCSprite::spriteWithFile("off.png"); 


    CCMenuItem *LeftOn=CCMenuItemSprite::itemFromNormalSprite(on1,on2); 
    CCMenuItem *RightOn=CCMenuItemSprite::itemFromNormalSprite(on3,on4); 
    CCMenuItem *LeftOff=CCMenuItemSprite::itemFromNormalSprite(off1,off2); 
    CCMenuItem *RightOff=CCMenuItemSprite::itemFromNormalSprite(off3,off4); 

    CCMenuItemToggle *Left = CCMenuItemToggle::itemWithTarget(this, menu_selector(MyScene::swapL),LeftOn,LeftOff,NULL); 

    CCMenuItemToggle *Right = CCMenuItemToggle::itemWithTarget(this, menu_selector(MyScene::swapR),RightOn,RightOff,NULL); 

    CCMenu *Radio= CCMenu::menuWithItems(Left,Right,NULL); 

    Radio->alignItemsHorizontallyWithPadding(20); 
    Radio->setPosition(ccp(WinSize.width/2,WinSize.height/2)); 


    this->addChild(Radio); 
    ////////////////////////////// 
    return true; 
} 

void MyScene::swapL(CCObject *sender) 
{ 
    L= (CCMenuItemToggle*)sender; 
    CCLOG("L= %d",L->getSelectedIndex()); 

    int i=(L->getSelectedIndex()); 


} 

void MyScene::swapR(CCObject *sender) 
{ 
    R= (CCMenuItemToggle*)sender; 

    CCLOG("R= %d",R->getSelectedIndex()); 
    int j=(R->getSelectedIndex()); 


} 
+0

あなたの質問は十分ではありません、あなたが直面している問題は不明です。より良い方法でそれを枠に入れてください。 –

+0

2つの関数からそれぞれ3つ目の関数に引数を送る2つのvoid関数を持つことは可能ですか? –

答えて

2

2つのvoid関数これらの2つの機能から第三の機能1各arguements

はい、それは可能ですが、なぜあなたはそれが不可能だと思います

Online Sample:??

#include<iostream> 

void doSomething(int &i) 
{ 
    i = 10; 
} 

void doSomethingMore(int &j) 
{ 
    j = 20; 
} 

void FinalDoSomething(const int i, const int j, int &k) 
{ 
    k = i + j; 
} 

int main() 
{ 
    int i = 0; 
    doSomething(i);  

    int j = 0; 
    doSomethingMore(j); 

    int k = 0; 
    FinalDoSomething(i,j,k); 

    std::cout<<k; 

    return 0; 
} 
0

あなたが呼び出すことの間のメソッドを持つことができます。この関数は、最初の呼び出し値をメンバに格納し、2番目の呼び出しでは、2つのパラメータを渡す関数を呼び出します(先に渡されたもの+メンバを使用します)。

関連する問題