2010-10-12 163 views
0

我將一個簡單的Flash「架子鼓」應用程序中使用來自http://www.tuio.org/?flashAS3:觸發人工的MouseEvent

作爲一個快速和骯髒的解決方案TUIO AS3參考實現支持TUIO多點觸摸,我試圖觸發一個人工的MouseEvent,但似乎沒有發生:(哪裏是我的錯誤是這甚至可能已經感謝

下面的代碼:?!

package { 

    import org.tuio.tuio.*; 
    import org.tuio.osc.*; 
    import flash.display.*; 
    import flash.ui.*; 
    import flash.events.*; 
    import flash.media.*; 

    public class drumsets2 extends MovieClip implements ITuioListener { 

     private var tuio:TuioClient; 

     var soundS01:Sound = new S01(); 
     // more sounds... 

     public function drumsets2(){ 
      this.tuio = new TuioClient(new LCConnector()); 
      this.tuio.addListener(this); 

      drum1.hitS01.addEventListener(MouseEvent.MOUSE_DOWN, playS01); 
      // more event listeners for sounds... 
     } 


     // this is where the 'magic' is supposed to happen 

     public function addTuioCursor(tuioCursor:TuioCursor):void { 
      stage.dispatchEvent(
       new MouseEvent(MouseEvent.MOUSE_DOWN, true, false, tuioCursor.x*stage.stageWidth, tuioCursor.y*stage.stageHeight) 
      ); 
     } 


     function playS01(e:MouseEvent):void 
     { 
      var scS01:SoundChannel = soundS01.play(); 
     } 

     // more play functions... 
    } 
} 

回答

2

您的事件偵聽器不在舞臺上,它位於drum1.hitS01上,我將假定它是一個DisplayObject,因爲它在附加代碼中的任何位置都沒有定義。所有你需要做的就是發送事件在該對象上,而不是在舞臺上:

drum1.hitS01.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN, true, false, tuioCursor.x * stage.stageWidth, tuioCursor.y * stage.stageHeight)); 
+0

+1。雖然localX和localY的代碼沒有任何意義。我知道你剛剛從OP樣本中粘貼了這部分內容,但我認爲這值得注意。也許使用'drum1.hitS01.mouseX'和'drum1.hitS01.mouseY'更有意義;或者只是離開默認值,因爲實際上沒有點擊,所以x和y座標在這裏沒有任何實際含義。 – 2010-10-13 04:15:29

+0

謝謝!但我試圖做的只是將觸摸事件轉發到整個舞臺,所以我不必檢查觸摸事件是否在hihat,basedrum等內部......是否有辦法完成這種行爲? – 2010-10-13 13:25:38

+0

然後,如果要將事件轉發給舞臺,則需要舞臺上的事件偵聽器。另外,胡安好,我認爲它對他有一些意義,所以我只是把它留下。 – Aaron 2010-10-13 18:14:45

0

如果我理解正確你的問題,好像你只是嘗試去 從代碼調用playS01函數?如果是這樣,你可以在你的班級的任何地方撥打playS01(null)。 如果它不是來自鼠標事件,那麼您需要將它傳遞給它,以免它沒有收到預期的參數。

+0

事情是,有完美的功能鼠標事件_lots_,我不想混亂的所有代碼。我認爲可能只是人爲觸發現有的事件。我也需要在其他項目中做到這一點,所以這將是一個很酷的解決方案,我可以用它們全部...... – 2010-10-12 21:41:37