在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);
}