標準のFlash ComboBoxコンポーネントをCS3(AS2)プロジェクトに追加しました。それは私の図書館のシンボルの一部であり、ステージ上では作成されません。Flash ComboBoxコンポーネントがWebブラウザで間違った値を選択します(IDEで正常に動作します)
私はComboBoxのスキニング、ソースコードなどを変更しませんでした。
ユーザーがコンボボックスをクリックすると、リストが下がり、ユーザーがマウスを使用してアイテムを選択し、そのアイテムがそのコンボボックスで動作するコードに渡されます。
Flash IDEでは、すべて正常に動作します。しかし、これをWebSiteにデプロイして、WebブラウザでFlashページを表示すると、ユーザーがドロップダウンリストの値をクリックすると、別の値が選択され、タイプインボックスに表示されます。 (私はMAC上でFirefox 3.0.12を使用していますが、私たちのQAは他のブラウザとバージョンで問題を認識しています)。この同じ誤った値は、私の変更イベントコールバックにも渡されます。
問題は、Flash Player 9のために明らかであると
10.私は、コンボボックスから値を取得する2つの方法を試してみました。
a)コンポーネントに直接アクセスして選択を取得します。このアプローチを使用する場合、ユーザがキーボードを使用して番号のORタイプを直接選択すると、IDEおよびブラウザで機能します。マウス選択のみが失敗します。
var num_pages_value:Number = Number(num_pages.num_pages_cb.selectedItem["data"]);
b)イベントハンドラを使用する。この方法を使用すると、ComboBoxへのキーボードアクセスが機能しなくなります。イベントハンドラを設定する方法は次のとおりです。
var cb:ComboBox = num_pages.num_pages_cb;
// mx.events.EventDispatcher.initializeを指定しないと、変更イベントは発生しません!!!
//ドキュメントにはありません。これを見つけるのがとても難しかったです... mx.events.EventDispatcher.initialize(cb); cb.addEventListener( "change"、this);
ここにイベントハンドラがあります。
機能変更(evt){ num_pages_value = Number(evt.target.selectedItem.label); }
私は、mx.events.EventDispatcher.initializeの呼び出しがキーボードのやりとりを壊すものだと思っていますが、それがなければハンドラは呼び出されません。しかしどちらの方法もユーザーが望む値を選択することはできません。 7点を選んで9点、3点を選んで6点を取得します。得られる価値は毎回同じではありません。
シナリオを再作成しようとしています。どのサイズがあなたのswfですか? html/FlashVarsから何かセットアップ?ライブラリからComboBoxを作成しているので、createClassObjectで作成していますか? –