[英]AS3: Mouse Click event not working
背景:
嘗試制作一個簡單的“丟球”游戲。
該代碼位於時間軸的第一幀內。 舞台上沒有其他東西了。
問題:
使用QuickBox2D,我做了一個簡單的If語句,該語句根據Mouse-x的位置放置和放置對象:
if (MouseEvent.CLICK) {
sim.addCircle({x:mouseX, y:1, radius:0.25, density:5});
我導入了MouseEvent庫:
import flash.events.MouseEvent;
如果單擊,什么也沒有發生,也沒有輸出錯誤。
實際操作中查看它: http : //gabrielmeono.com/download/Lucky_Hit_Alpha.swf http://gabrielmeono.com/download/Lucky_Hit_Alpha.fla
完整代碼:
[SWF(width = 350, height = 600, frameRate = 60)]
import com.actionsnippet.qbox.*;
import flash.events.MouseEvent;
var sim:QuickBox2D = new QuickBox2D(this);
sim.createStageWalls();
//var ball:sim.addCircle({x:mouseX, y:1, radius:0.25, density:5}); //
// make a heavy circle
sim.addCircle({x:3, y:1, radius:0.25, density:5});
sim.addCircle({x:2, y:1, radius:0.25, density:5});
sim.addCircle({x:4, y:1, radius:0.25, density:5});
sim.addCircle({x:5, y:1, radius:0.25, density:5});
sim.addCircle({x:6, y:1, radius:0.25, density:5});
// create a few platforms
sim.addBox({x:3, y:2, width:4, height:0.2, density:0, angle:0.1});
// make 26 dominoes
for (var i:int = 0; i<7; i++){
//End
sim.addCircle({x:1 + i * 1.5, y:16, radius:0.1, density:0});
sim.addCircle({x:2 + i * 1.5, y:15, radius:0.1, density:0});
//Mid end
sim.addCircle({x:0 + i * 2, y:14, radius:0.1, density:0});
sim.addCircle({x:0 + i * 2, y:13, radius:0.1, density:0});
sim.addCircle({x:0 + i * 2, y:12, radius:0.1, density:0});
sim.addCircle({x:0 + i * 2, y:11, radius:0.1, density:0});
sim.addCircle({x:0 + i * 2, y:10, radius:0.1, density:0});
//Middle Start
sim.addCircle({x:0 + i * 1.5, y:09, radius:0.1, density:0});
sim.addCircle({x:1 + i * 1.5, y:08, radius:0.1, density:0});
sim.addCircle({x:0 + i * 1.5, y:07, radius:0.1, density:0});
sim.addCircle({x:1 + i * 1.5, y:06, radius:0.1, density:0});
}
if (MouseEvent.CLICK) {
sim.addCircle({x:mouseX, y:1, radius:0.25, density:5});
sim.start();
/*sim.mouseDrag();*/
}
您應該創建鼠標事件偵聽器:
addEventListener(MouseEvent.CLICK, add_circle_handler);
function add_circle_handler(event:MouseEvent):void {
sim.addCircle({x:mouseX, y:1, radius:0.25, density:5});
}
當您不再需要添加圈子時,請不要忘記刪除事件監聽器。 與偵聽器一起使用時的最佳做法(與內存管理有關):
removeEventListener(MouseEvent.CLICK, add_circle_handler);
您需要為鼠標事件添加事件偵聽器:
addEventListener(MouseEvent.CLICK, mouseClickHandler);
protected function mouseClickHandler(event:MouseEvent):void
{
sim.addCircle({x:mouseX, y:1, radius:0.25, density:5});
}
那是因為您在聽鼠標單擊錯誤。
代替
if (MouseEvent.CLICK) {
sim.addCircle({x:mouseX, y:1, radius:0.25, density:5});
sim.start();
/*sim.mouseDrag();*/
}
你需要做
addEventListener(MouseEvent.CLICK, clicked);
function clicked(e:MouseEvent) {
sim.addCircle({x:mouseX, y:1, radius:0.25, density:5});
sim.start();
/*sim.mouseDrag();*/
}
當您不需要再聽其他點擊時,請執行
removeEventListener(MouseEvent.CLICK, clicked);
刪除事件監聽器(以釋放內存)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.