我有一個項目,我需要將Flash電影製作爲互動遊戲。因爲,大多數瀏覽器已經(或即將)對Flash進行過濾,所以我決定這款遊戲必須基於HTML5/JS。由於大多數圖形和動畫已經在這部Flash影片中完成(我有它的源代碼),我正在使用Adobe Flash和CreateJS技術(HTML5 + Canvas + JS)進行開發。到目前爲止,我非常喜歡這個解決方案,儘管我有一個我還無法解決的問題。 該遊戲是一個簡單的拖動&下降匹配遊戲。這個問題我已經在這個問題標題簡短地描述,我會盡量在這裏更詳細的解釋:當mousedown/pressmove播放目標電影時,CreateJS上傳/點擊不會觸發
label.on('mousedown', function() {
//this.image.bg.gotoAndStop(2);
});
label.on('pressmove', function(evt) {
this.x = getStageX(evt.stageX);
this.y = getStageY(evt.stageY);
currentStage.setChildIndex(this, currentStage.getNumChildren() - 1);
stage.update();
});
label.on('pressup', function(evt) {
console.log('Hi! I'm mouseup event!')
this.x = labelInitX;
this.y = labelInitY;
this.image.bg.gotoAndStop(0);
});
上面,你可以看到簡單的3事件處理程序我使用。一切工作正常,直到我取消註釋第二行 - //this.image.bg.gotoAndStop(2);
。當我這樣做時,pressup
事件大多不會觸發,這很奇怪,因爲有時會觸發(10次中的2-3次),所以標籤粘貼指針,直到再次按下按鈕。 這是一些錯誤,或者我只是不明白關於CreateJS及其事件處理程序的一些東西。我嘗試了不同的組合。使用click
代替pressup
,將this.image.bg.gotoAndStop(2);
置於pressmove
處理程序內。用stage.on('stagepressmove', handler)
替換pressmove
處理程序。沒有沒有工作。 this.image.bg.gotoAndStop(2);
- 這個東西只是更新時間範圍(更改標籤的背景圖片)。我可以以編程方式更改此圖像(無需播放時間範圍),我幾乎可以確定問題將得到解決,但我想了解自己這裏出了什麼問題,或者我在做什麼錯誤的事件處理程序。
另一個不那麼重要的事情,但將需要了解的是爲什麼當pressmove
事件正在運行,CreateJS對象停止接收事件觸發約rollover
或mouseover
?在DOM中,默認情況下事件冒泡正在運行,直到您停止使用stopPropagation。它如何與CreateJS一起工作?似乎默認情況下,冒泡只是在這裏關閉。我怎樣才能打開它?
經過測試,這也適用。謝謝! – nostop