8,324
社区成员
发帖
与我相关
我的任务
分享
bool levelSelector::init() {
if (!Layer::init()) {
return false;
}
else {
auto VisualSize = Director::getInstance()->getVisibleSize();
auto OriginPoint = Director::getInstance()->getVisibleOrigin();
auto selector_bg_sprite = Sprite::create("LevelSelector.png");
auto goNextSprite = Sprite::create("goNextIcon.png");
auto goPreviousSprite = Sprite::create("goPreviousIcon.png");
selector_bg_sprite->setPosition(Point(VisualSize.width / 2 + OriginPoint.x, VisualSize.height / 2 + OriginPoint.y));
goPreviousSprite->setPosition(Point(goPreviousSprite->getContentSize().width, VisualSize.height / 2 ));
goNextSprite->setPosition(Point(VisualSize.width - goNextSprite->getContentSize().width,
VisualSize.height / 2));
selector_bg_sprite->setScale(1.5f);
this->addChild(selector_bg_sprite, 0);
this->addChild(goNextSprite, 0);
this->addChild(goPreviousSprite, 2);
String* pString;
for (int i = 0; i < 20; i++) {
pString = String::createWithFormat("%d", i + 1);
auto imagPath = "level_bg.png";
auto levelSprite = Sprite::create(imagPath);
auto levelLabel = LabelBMFont::create();
levelLabel->setString(pString->getCString());
levelLabel->setColor(ccRED);
//printf_s("%d", pString);
auto x = VisualSize.width / 5 + i % 8 * 80;
auto y = VisualSize.height - (VisualSize.height / 5) - i / 8 * 100;
levelSprite->setPosition(Point(x , y));
levelSprite->setScale(1.0f);
levelSprite->setTag(i + 1);
levelLabel->setPosition(Point(x , y));
this->addChild(levelSprite,0,i+1);
this->addChild(levelLabel, 0);
}
this->setTouchEnabled(true);
auto levelSpriteListener = EventListenerTouchOneByOne::create();
levelSpriteListener->setSwallowTouches(true);
levelSpriteListener->onTouchBegan = [=](Touch* touch, Event* event) {
log("onTouchBegan");
MessageBox("Hellow! onTouchBegan!", "Alert");
return true;
};
levelSpriteListener->onTouchMoved = [=](Touch* touch, Event* event) {
log("onTouchMoved");
MessageBox("Hellow! onTouchMoved!", "Alert");
};
levelSpriteListener->onTouchEnded = [=](Touch* touch, Event* event) {
log("onTouchEnded");
MessageBox("Hellow! onTouchEnded!", "Alert");
};
levelSpriteListener->onTouchBegan = CC_CALLBACK_2(levelSelector::onTouchBegan, this);
levelSpriteListener->onTouchMoved = CC_CALLBACK_2(levelSelector::onTouchMoved, this);
levelSpriteListener->onTouchEnded = CC_CALLBACK_2(levelSelector::onTouchEnded, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(levelSpriteListener, this);
return true;
} //end else
}
我这个场景是用来做选关的,是从前一个场景跳到这个场景,难道和这个有关系?[/quote]
果断有关系了...至于什么关系...解铃还须系铃人吖
我这个场景是用来做选关的,是从前一个场景跳到这个场景,难道和这个有关系?
原来在onEnter里面还要加上这玩意
Layer::onEnter();
我这个场景是用来做选关的,是从前一个场景跳到这个场景,难道和这个有关系?[/quote]
果断有关系了...至于什么关系...解铃还须系铃人吖
[/quote]
好吧,我找到原因了
,我重写了onEnter(),里面没有代码,我把它灭了,就有效果了。
void levelSelector::onEnter() {
//MessageBox("Hellow! Entering the layer now!", "Alert");
}
但是onEnter不是进入Layer的时候调用的么,怎么会影响到init()里面的代码?求解释……
我这个场景是用来做选关的,是从前一个场景跳到这个场景,难道和这个有关系?[/quote]
果断有关系了...至于什么关系...解铃还须系铃人吖
[/quote]
我新建了一个项目,把两个场景的代码都搬过去了,结果是起作用……代码一点没改
,为毛呢?难道是前面那个项目打开的方式不对?
,log和MessageBox的东西都没出来
后面的三条CC_CALLBACK_2是因为我用前面的回调函数没起作用,又改用CC_CALLBACK_2试了试,也没起作用,没注释掉