726
社区成员




#include "HelloWorldScene.h"
#include "SimpleAudioEngine.h"
#include "ui/CocosGUI.h"
USING_NS_CC;
Scene* HelloWorld::createScene()
{
return HelloWorld::create();
}
// Print useful error message instead of segfaulting when files are not there.
static void problemLoading(const char* filename)
{
printf("Error while loading: %s\n", filename);
printf("Depending on how you compiled you might have to add 'Resources/' in front of filenames in HelloWorldScene.cpp\n");
}
// on "init" you need to initialize your instance
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !Scene::init() )
{
return false;
}
auto visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
// add "HelloWorld" splash screen"
sprite = Sprite::create("HelloWorld.png");
if (sprite == nullptr)
{
problemLoading("'HelloWorld.png'");
}
else
{
// position the sprite on the center of the screen
sprite->setPosition(Vec2(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y));
// add the sprite as a child to this layer
this->addChild(sprite, 0);
}
/////////////////////////////
// 2. add a menu item with "X" image, which is clicked to quit the program
// you may modify it.
// add a "close" icon to exit the progress. it's an autorelease object
auto closeItem = MenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this, sprite));
if (closeItem == nullptr ||
closeItem->getContentSize().width <= 0 ||
closeItem->getContentSize().height <= 0)
{
problemLoading("'CloseNormal.png' and 'CloseSelected.png'");
}
else
{
float x = origin.x + visibleSize.width - closeItem->getContentSize().width/2;
float y = origin.y + closeItem->getContentSize().height/2;
closeItem->setPosition(Vec2(x,y));
}
// create menu, it's an autorelease object
auto menu = Menu::create(closeItem, NULL);
menu->setPosition(Vec2::ZERO);
this->addChild(menu, 1);
/////////////////////////////
// 3. add your codes below...
// add a label shows "Hello World"
// create and initialize a label
auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 24);
if (label == nullptr)
{
problemLoading("'fonts/Marker Felt.ttf'");
}
else
{
// position the label on the center of the screen
label->setPosition(Vec2(origin.x + visibleSize.width/2,
origin.y + visibleSize.height - label->getContentSize().height));
this->addChild(label, 1);
}
auto pBut1 = ui::Button::create("CloseNormal.png","CloseSelected.png");
pBut1->setAnchorPoint(Vec2::ZERO);
pBut1->addTouchEventListener(CC_CALLBACK_2(HelloWorld::ContralMoveTest, this, sprite));
this->addChild(pBut1);
return true;
}
void HelloWorld::ContralMoveTest(Ref *sender,ui::Widget::TouchEventType controlEvent, Sprite* pSprite){
if (!isScheduled("HelloWorld::ContralMoveTest")){
this->schedule([=](float dt){
pSprite->setPositionX(pSprite->getPositionX() + 1.0f);
}, 0, -1, 0, "HelloWorld::ContralMoveTest");
}
//离开状态结束定时器
if (controlEvent == ui::Widget::TouchEventType::ENDED) {
this->unschedule("HelloWorld::ContralMoveTest");
}
}
void HelloWorld::menuCloseCallback(Ref* pSender, Sprite* pSprite)
{
}
void HelloWorld::SchedulerTest(float dt, Sprite* pSprite)
{
pSprite->setVisible(!pSprite->isVisible());
}