一个测试重力感应的程序

做了一个测试手机重力感应的小程序

这是直接在HelloWorld.cpp上直接改的
以下是代码

 

#include "HelloWorldScene.h" 

USING_NS_CC; 

Scene* HelloWorld::createScene() 
{ 
// 'scene' is an autorelease object 
auto scene = Scene::create(); 

// 'layer' is an autorelease object 
auto layer = HelloWorld::create(); 

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

// return the scene 
return scene; 
} 

// on "init" you need to initialize your instance 
bool HelloWorld::init() 
{ 
////////////////////////////// 
// 1. super init first 
if ( !Layer::init() ) 
{ 
return false; 
} 

Size visibleSize = Director::getInstance()->getVisibleSize(); 
Vec2 origin = Director::getInstance()->getVisibleOrigin(); 
Size size = Director::getInstance()->getVisibleSize(); 

///////////////////////////// 
// 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)); 

closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , 
origin.y + closeItem->getContentSize().height/2)); 

// create menu, it's an autorelease object 
auto menu = Menu::create(closeItem, NULL); 
menu->setPosition(Vec2::ZERO); 
this->addChild(menu); 

//返回数据1 
auto shux=Label::create("x=240\ny=240\nz=240","Arial", 24); 
shux->setPosition(Point(origin.x + visibleSize.width/2, 
origin.y + visibleSize.height/2-50)); 
shux->setTag(1); 
this->addChild(shux); 



///////////////////////////// 
// 3. add your codes below... 

Device::setAccelerometerEnabled(true); 

auto sprite = Sprite::create("ball.png"); 
sprite->setPosition(origin + Vec2(size.width/2, size.height/2)); 
addChild(sprite); 

auto listener = EventListenerAcceleration::create(=](Acceleration* acc, Event* event){ 
auto ballSize = sprite->getContentSize(); 

auto ptNow = sprite->getPosition(); 

log("acc: x = %lf, y = %lf", acc->x, acc->y); 

ptNow.x += acc->x * 9.81f; 
ptNow.y += acc->y * 9.81f; 
shuxx=acc->x * 9.81f; 
shuyy=acc->y*9.81f; 
shuzz=acc->z*9.81f; 

//返回数据2 
Label *flag=(Label*)this->getChildByTag(1); 
char strx; 
sprintf(strx,"x=%f\ny=%f\nz=%f",shuxx,shuyy,shuzz); 
flag->setString(strx); 

sprite->setPosition(ptNow); 
}); 

_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, sprite); 







// add a label shows "Hello World" 
// create and initialize a label 

auto label = LabelTTF::create("Gravity Test", "Arial", 24); 

// position the label on the center of the screen 
label->setPosition(Vec2(origin.x + visibleSize.width/2, 
origin.y + visibleSize.height - label->getContentSize().height)); 

// add the label as a child to this layer 
this->addChild(label); 



return true; 
} 


void HelloWorld::menuCloseCallback(Ref* pSender) 
{ 
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) 
MessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert"); 
return; 
#endif 

Director::getInstance()->end(); 

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) 
exit(0); 
#endif 
} 



```