1

mx.TextInput コントロールといくつかのボタンだけを使用して、単純なフレックス/AIR アプリケーションに取り組んでいます。システムクロムは使用していません。

多かれ少なかれmxmlはこれです:

    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="495" height="316" creationComplete="init()">
    <mx:TitleWindow width="481" height="84" layout="absolute" horizontalCenter="0" showCloseButton="false" id="win" top="10">
        <mx:Label text="blahhh" id="label1" left="0" top="0"/>
        <mx:TextInput id="textinput1" left="155" top="0" right="5"  editable="true" />
        <mx:Label text="expand" right="36" bottom="0" click="toggleState()"/>
        <mx:Label text="exit" click="stage.nativeWindow.close()" right="0" bottom="0"/>
    </mx:TitleWindow>
</mx:Application>

ウィンドウをドラッグ可能にするために、MouseEvent.MOUSE_DOWN リスナーを TitleWIndow に追加しました。

win.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void { stage.nativeWindow.startMove();});

問題は、内側の textinput コントロールが eventlistner を継承しているように見えるため、テキストを入力できますが、選択できないことです (マウスを押したままにすると、NativeWindow.move() 関数がトリガーされます)。

何か不足していますか?ウィンドウをドラッグ可能にしたいのは、他のコントロールではなく、TitleWindow をマウスダウンしたときだけです..

4

1 に答える 1

1

target次のように、イベント オブジェクトの属性を確認する必要があります。

win.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void {
    if (e.target == win)
        stage.nativeWindow.startMove();
});

それ以外の場合は、TextInput などの内部要素から発生する mouseDown イベントもキャッチします。

于 2009-01-18T22:22:34.450 に答える