您的位置:首页 > 移动开发 > Cocos引擎

从Delphi开始学Cocos2dx-3.0[5]:鼠标按下移动弹起与单点触摸

2013-12-21 16:17 337 查看
在Delphi 里面的三个基本的鼠标操作事件是

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
begin

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Single);
begin

end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
begin

end;


再 cocos里面其实也是差不多的

首先重写 Layer的 onEnter函数

//HelloWorldScene.h

virtual void onEnter() override;
然后在onEnter里面绑定事件
void THelloWorld::onEnter()
{
TLayer::onEnter();

// 创建一个监听事件
auto listener = TEventListenerTouch::create(dmOneByOne);
//如果不加入此句消息依旧会向下传递
listener->setSwallowTouches(true);

// 绑定事件
listener->onTouchBegan = CC_CALLBACK_2(THelloWorld::onTouchBegan, this);
listener->onTouchMoved = CC_CALLBACK_2(THelloWorld::onTouchMoved, this);
listener->onTouchEnded = CC_CALLBACK_2(THelloWorld::onTouchEnded, this);

TEventDispatcher::getInstance()->addEventListenerWithSceneGraphPriority(listener, this);
}


这和在Delphi中绑定事件几乎是一样的做法
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.OnMouseDown := FormMouseDown;
Form1.OnMouseMove := FormMouseMove;
Form1.OnMouseUp   := FormMouseUp;
end;


接下来开始写,绑定的事件

// 触摸事件
bool onTouchBegan(TTouch* touch, TEvent* event);
void onTouchMoved(TTouch* touch, TEvent* event);
void onTouchEnded(TTouch* touch, TEvent* event);

bool THelloWorld::onTouchBegan(TTouch* touch, TEvent* event)
{
CCLOG("THelloWorld::onTouchBegan id = %d, x = %f, y = %f", touch->getID(), touch->getLocation().x, touch->getLocation().y);
return true;
}

void THelloWorld::onTouchMoved(TTouch* touch, TEvent* event)
{
CCLOG("THelloWorld::onTouchMoved id = %d, x = %f, y = %f", touch->getID(), touch->getLocation().x, touch->getLocation().y);
}

void THelloWorld::onTouchEnded(TTouch* touch, TEvent* event)
{
CCLOG("THelloWorld::onTouchEnded id = %d, x = %f, y = %f", touch->getID(), touch->getLocation().x, touch->getLocation().y);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: