2011-12-15 13 views
1

私はマルチターゲットアプリケーションを開発しています。シナリオは、マウスやタッチイベントを取得するためにいくつかの条件付きコンパイルを使用する必要があるということです。マウスイベントを延長

だから私はこのような何かをしています:

拡張:

package { 

    import flash.events.MouseEvent; 
    import flash.display.InteractiveObject; 



    public class fackeClick extends MouseEvent { 


     public static const CLICKS:String = "click"; 

     public function fackeClick(type:String, bubbles:Boolean = true, cancelable:Boolean = false, localX:Number=0, localY:Number=0, relatedObject:InteractiveObject = null, ctrlKey:Boolean = false, altKey:Boolean = false, shiftKey:Boolean = false, buttonDown:Boolean = false, delta:int = 0) 
     { 

      super(eventType, bubbles, cancelable, localX, localY, relatedObject, ctrlKey, altKey, shiftKey, buttonDown, delta); 
     } 


    } 

} 

そして、このように使用する:

はTypeError:この使用法は私にランタイムエラーがスローされます

package { 

    import flash.display.MovieClip; 

    import fackeClick; 


    public class Main extends MovieClip { 


     public function Main() { 
      stage.addEventListener(fackeClick.CLICKS, tryClick); 
     } 
     // 
     private function tryClick(e:fackeClick):void { 

        trace(e); 

      } 
    } 

} 

を:エラー#1034:強制型変換が失敗しました:flash.events:[email protected]を変換できません。 eClick。

プライベート関数tryClick(e:fackeClick)をプライベート関数tryClick(e:MouseEvent)に切り替えると、それが動作します。しかし、実際にカスタムイベントを関数に渡す必要があります。

「fackeClickは、」クラスは、マウスやTouchEvents

を拡張し、異なるパッケージに書き込まれます

、私たちはtoucheventsなどとしてclickeventsを使用することができることを知ってください 私は非常に奇妙なシナリオでは午前本当にしなければなりませんこのような。

どのような考えですか?

答えて

1

fackeClick.CLICKSMouseEvent.CLICKと同じ文字列を使用しているためにスローされるエラーです。 Flashでは'click'がキャッチされ、通常のMouseEventが送出されます。あなたのfakeClickクラスと競合します。

これは私に次の問題をもたらしますが、このようなイベントを拡張することはできないと思います。 FlashはMouseEventsを処理するので、MouseEventを拡張すると、実際のMouseEvent(またはTouchEvent)の代わりにFlashがカスタムイベントを送出しません。フラッシュが「クリック」イベントを処理する方法について

詳細(公式)情報、ドキュメントに記載されています:

InteractiveObject - click

しかし、その後、再び、私はこれについて、100%じゃないと多分あなたのことができステージ上でMouseEventsやTouchEventsを聴いて回避策を見つけ、その後自分のイベントを送出してください。それはかなりではありませんが、おそらくそれは動作します。

+0

説明をいただきありがとうございます。私はすでに成功していないいくつかの方法を試しました。私は、あなたが言ったようにそれは全く不可能であると推測していました。 しかし、それは本当に面倒です。なぜイベントが変換されないのですか? 私はちょうど同じ名前を使用したい、dammit! :) とにかく、ありがとうございました。 –

+0

申し訳ありませんが、初めてここに投稿します! :0 可! –