1

Firefox 3では、Haxe/FlashアプリのすべてのmouseWheelイベントが2回発生しています。これは、WindowsバージョンのFirefoxでのみ発生するようです。IEやOperaでは発生せず、Linuxでは発生しません。

これは既知の問題ですか、それとも何か間違ったことをしている可能性がありますか?ユーザーエージェントをチェックしたり、他のすべてのイベントを無視したりするなど、クレイジーなことを伴わない回避策はありますか?

更新:古いパワーブックでテストしたところ(pixelbreakerのSWFMacMouseWheelスクリプトを組み込んだ後)、FirefoxのOS Xバージョンは正常に動作しますが、Safari(3.2.1)もイベントを2倍にしていることがわかりました。

また、AS3で簡単なテストを作成して、それがどういうわけかHaxeのせいではないことを確認しました。私は同じ振る舞いをしました。コードは以下のとおりです。ここで試すことができます。

package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.text.TextField;

public class Test extends Sprite {
    public function Test() {
        super();
        var tf: TextField = new TextField();
        tf.height = 300;
        addChild(tf);
        stage.addEventListener(MouseEvent.MOUSE_WHEEL,
                   function(e:MouseEvent):void { tf.appendText(e.delta+"\n"); });
    }
}
}
4

2 に答える 2

2

ナビゲーションにスクロールバーを何度も使用したにもかかわらず、これに遭遇したことはありません。ただし、「透明」や「不透明」などのwmode(デフォルトのウィンドウモードではない)を使用すると、不整合が発生します。

wmodeを使用している場合(たとえば、埋め込みHTMLでwmode = "transparent")、それを無効にしてみて、動作が変わるかどうかを確認してください。

于 2009-12-28T07:31:46.483 に答える
1

私もこれをヒットしました-そしてホイールマウスが3-5セグメントでスライダーの配置を制御していたので、それは明らかなグリッチでした。

タイマーを作成し、新しいホイールイベントを許可する前に10ミリ秒が経過したことを確認することになりました。完璧な解決策ではありませんが、10ミリは妥当だと感じています。

wheel_mouse_lock_time:Number = new Date().getTime();
...

public function image_wheel_zoom(e:MouseEvent):void {
  var current_time:Number = new Date().getTime();

  if (current_time - wheel_mouse_lock_time < 10){
    return; 
  }

  wheel_mouse_lock_time = ctime;

  //handle event
} 
于 2010-03-09T17:15:02.567 に答える