如题,windows下可正常调试,在Android下无法进入Sence。能听到背景音乐,但无法正常加载场景,然后闪退。闪退回到桌面后音乐会继续播放下去。
资源没问题,SizeAdapt是自己写的屏幕适配类,已经测试过不存在问题。
尝试过注释掉Label或listener的部分,仍无法解决。
之前没怎么改动代码,忽然就出现这个问题了。
该Sence的.cpp完整代码如下:
#include “Classes.h”
#include “HomeSence.h”
#include “MemorySence.h”
#include “SimpleAudioEngine.h”
USING_NS_CC;
Scene* HomeSence::createScene()
{
return HomeSence::create();
}
bool HomeSence::init()
{
Scene::init();
CocosDenshion::SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic(“music/bgm/angelica.wav”);
auto visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
SizeAdapt sizeAdapt(visibleSize.width,visibleSize.height);
CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic("music/bgm/angelica.wav",true);
auto background = Sprite::create("background/homeNormal.png");
{
background->setScaleX(visibleSize.width / background->getContentSize().width);
background->setScaleY(visibleSize.height / background->getContentSize().height);
background->setPosition(visibleSize.width / 2,visibleSize.height / 2);
this->addChild(background,0);
}
auto girl = Sprite::create("girls/bt-2.png");
{
girl->setScaleX(sizeAdapt.heightToScreen(1200/girl->getContentSize().height));
girl->setScaleY(sizeAdapt.heightToScreen(1200/girl->getContentSize().height));
girl->setPosition(Vec2(sizeAdapt.widthToScreen(400),
sizeAdapt.heightToScreen(200)));
this->addChild(girl,0);
{
auto girl0 = Sprite::create("girls/bt-2-0.png");
girl->addChild(girl0,0);
girl0->setPosition(Vec2(girl->getContentSize().width/2,
girl->getContentSize().height/2));
girl0->setVisible(0);
girl0->setName("girl0");
//拖动舔腿的实现
auto listener = EventListenerTouchOneByOne::create();
listener->setSwallowTouches(true);
listener->onTouchBegan = [](Touch* touch,Event* event)
{
auto target = event->getCurrentTarget();
Point locationInNode = target->convertToNodeSpace(touch->getLocation());
Size size = target->getContentSize();
Rect rect = Rect(0,0,size.width,size.height);
if (rect.containsPoint(locationInNode)) {
if (target->getActionByTag(0))
target->getActionByTag(0)->stop();
if (target->getChildByName("girl0")->getPosition().y!=target->getContentSize().height/2
&& target->getPosition().y!=target->getChildByName("girl0")->getPosition().y) {
Vec2 girl0OriginPosition=target->getPosition();
target->setPositionY(target->getChildByName("girl0")->getPosition().y);
target->getChildByName("girl0")->setPositionY(girl0OriginPosition.y-target->getPosition().y+target->getContentSize().height/2);
}
else
target->getChildByName("girl0")->setPosition(target->getContentSize().width/2,target->getContentSize().height/2);
target->setOpacity(0);
target->getChildByName("girl0")->setVisible(1);
return true;
}
return false;
};
listener->onTouchMoved = [](Touch* touch,Event* event)
{
auto target = event->getCurrentTarget();
if (target->getActionByTag(0))
target->getActionByTag(0)->stop();
if (target->getChildByName("girl0")->getPosition().y+touch->getDelta().y>=target->getContentSize().height/2
&& target->getChildByName("girl0")->getPosition().y+touch->getDelta().y<=target->getContentSize().height*3/4)//再往上就看见胖次啦
target->getChildByName("girl0")->setPosition(target->getChildByName("girl0")->getPosition().x,target->getChildByName("girl0")->getPosition().y+touch->getDelta().y);
};
listener->onTouchEnded = [](Touch* touch,Event* event)
{
auto target = event->getCurrentTarget();
Vec2 girlOriginPosition=target->getPosition();//记录下来初始坐标
target->setOpacity(255);
ActionInterval* back = MoveTo::create(1.5,Vec2(girlOriginPosition.x,girlOriginPosition.y));
back->setTag(0);
if (target->getChildByName("girl0")->getPosition().y-target->getContentSize().height/2+target->getPosition().y != target->getPosition().y)
target->setPositionY(target->getChildByName("girl0")->getPosition().y-target->getContentSize().height/2+target->getPosition().y);
target->getChildByName("girl0")->setVisible(0);
target->getChildByName("girl0")->setPositionY(girlOriginPosition.y);
target->runAction(back);
};
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener,girl);
}
}
auto storyBase = Sprite::create("items/HomeSence/storyBase.png");
{
storyBase->setScaleX(sizeAdapt.heightToScreen(393/storyBase->getContentSize().width*1.25));
storyBase->setScaleY(sizeAdapt.heightToScreen(315/storyBase->getContentSize().height));
storyBase->setPosition(Vec2(sizeAdapt.widthToScreen(900),
sizeAdapt.heightToScreen(400)));
this->addChild(storyBase,1);
Label* lb0 = Label::createWithSystemFont("章节","arial",128);
storyBase->addChild(lb0,2);
}
auto buttonStory = MenuItemImage::create(
"items/HomeSence/buttonStory.png",
"items/HomeSence/buttonStory0.png",
CC_CALLBACK_1(HomeSence::menuStoryCallback,this));
{
buttonStory->setScaleX(sizeAdapt.heightToScreen(351/buttonStory->getContentSize().width*1.25));
buttonStory->setScaleY(sizeAdapt.heightToScreen(124/buttonStory->getContentSize().height*1.25));
buttonStory->setPosition(Vec2(sizeAdapt.widthToScreen(900),
sizeAdapt.heightToScreen(340)));
}
auto buttonMail = MenuItemImage::create(
"items/HomeSence/buttonMailbox.png",
"items/HomeSence/buttonMailbox0.png",
CC_CALLBACK_1(HomeSence::menuMailCallback,this));
{
buttonMail->setScaleX(sizeAdapt.widthToScreen(65/buttonMail->getContentSize().width));
buttonMail->setScaleY(sizeAdapt.widthToScreen(65/buttonMail->getContentSize().width));
buttonMail->setPosition(Vec2(sizeAdapt.widthToScreen(32),
sizeAdapt.heightToScreen(32)));
}
auto buttonFanwai = MenuItemImage::create(
"items/HomeSence/buttonFanwai.png",
"items/HomeSence/buttonFanwai0.png",
CC_CALLBACK_1(HomeSence::menuFanwaiCallback,this));
{
buttonFanwai->setScaleX(sizeAdapt.widthToScreen(180/buttonFanwai->getContentSize().width));
buttonFanwai->setScaleY(sizeAdapt.heightToScreen(60/buttonFanwai->getContentSize().height));
buttonFanwai->setPosition(Vec2(sizeAdapt.widthToScreen(934),
sizeAdapt.heightToScreen(30)));
}
auto buttonNavigation = MenuItemImage::create(
"items/HomeSence/buttonNavigation.png",
"items/HomeSence/buttonNavigation0.png",
CC_CALLBACK_1(HomeSence::menuNavigationCallback,this));
{
buttonNavigation->setScaleX(sizeAdapt.widthToScreen(180/buttonNavigation->getContentSize().width));
buttonNavigation->setScaleY(sizeAdapt.heightToScreen(60/buttonNavigation->getContentSize().height));
buttonNavigation->setPosition(Vec2(sizeAdapt.widthToScreen(1114),
sizeAdapt.heightToScreen(30)));
}
auto buttonMemorize = MenuItemImage::create(
"items/HomeSence/buttonMemorize.png",
"items/HomeSence/buttonMemorize0.png",
CC_CALLBACK_1(HomeSence::menuMemorizeCallback,this));
{
buttonMemorize->setScaleX(sizeAdapt.widthToScreen(76/buttonMemorize->getContentSize().width));
buttonMemorize->setScaleY(sizeAdapt.heightToScreen(66/buttonMemorize->getContentSize().height));
buttonMemorize->setPosition(Vec2(sizeAdapt.widthToScreen(1242),
sizeAdapt.heightToScreen(33)));
}
auto menu = Menu::create(buttonStory,buttonMail,buttonNavigation,buttonFanwai,buttonMemorize,NULL);
menu->setPosition(Vec2::ZERO);
this->addChild(menu,1);
return true;
}
void HomeSence::menuStoryCallback(Ref* pSender)
{
CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect(“music/effect/click.wav”,false);
}
void HomeSence::menuMailCallback(Ref* pSender)
{
CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect(“music/effect/click.wav”,false);
}
void HomeSence::menuFanwaiCallback(Ref* pSender)
{
CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect(“music/effect/click.wav”,false);
}
void HomeSence::menuNavigationCallback(Ref* pSender)
{
CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect(“music/effect/click.wav”,false);
}
void HomeSence::menuMemorizeCallback(Ref* pSender)
{
CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect(“music/effect/click.wav”,false);
Director::getInstance()->replaceScene(MemorySence::createScene());
}
如果您愿意请花费宝贵的两分钟指出我的错误,谢。