2012-01-18 12 views
1

私は最初のフレームでステージ上にComboBox(cbと呼ぶ)を持っています。私はそれを右揃えのテキストフィールドに設定したいと思います。開始時に、他のコンポーネントのイベントが最初に無効になり、しばらくしてからComboBoxが再度有効になります。Flash AS3 ComboBoxスタイルが使用されていません

私は(最初のフレームに)スタイルを設定するために、次のコードを使用:

var menuTextFormat:TextFormat = new TextFormat(); 
menuTextFormat.align = "right"; 
cb.textField.setStyle("textFormat", menuTextFormat); 
cb.setStyle("textFormat", menuTextFormat); 
cb.setStyle("disabledTextFormat", menuTextFormat); 
video.addEventListener(VideoEvent.ON_CHANGE, function (event) {cb.enabled = okButton.enabled = false;}) 
video.addEventListener(VideoEvent.ON_READY, function (event) {cb.enabled = okButton.enabled = true; }) 

ビデオカメラが初期化されるとON_READYカメラが装着されたときにON_CHANGEイベントを送出単純なコンポーネントです。そのコードの後、私はcbに新しいDataProviderを与え、イベントをディスパッチするビデオコンポーネントにカメラをアタッチします。

フラッシュが開始されると、スタイルはアクティブではなく、テキストは左揃えになります。最初のイベントが発生すると、ComboBoxは無効になります。まだ左揃え。その後、2番目のイベントが有効になり、スタイルが適用され、右揃えになります。

最初から正しく整列したいです。私はASからコンポーネントを無効/有効にしようとしましたが、うまくいきませんでした。スタイルを適用するのに少し時間がかかるようです。

私はまた、スタイルが設定されていることを確認しました。私はタイマーを書き、整列をトレースしましたが、正しいと言われました。スタイルは使用されていません。

ASからaddChildを使ってコンポーネントを手動で追加しようとしましたが、まだ成功しませんでした。

どうやってスタイルを使用することができますか?

ありがとうございます!

環境:

CS5.5 
AS3 
Flash version: 11.1.102.55 
OS: Win XP 

アップデート:私は、コンボボックス(インスタンス名CB)と名付けライブラリからシンボルをドロップステージで

私はシンプルなコンセプトを作る方法を考え出しましたfoob​​ar(インスタンス名のビデオ)。 foob​​ar.asを作成し、次のように書き、その後

import fl.data.DataProvider; 
import flash.events.Event; 
import flash.text.TextFormat; 
import fl.controls.ComboBox; 

var menuTextFormat:TextFormat = new TextFormat(); 
menuTextFormat.align = "right"; 
cb.textField.setStyle("textFormat", menuTextFormat); 
cb.setStyle("textFormat", menuTextFormat); 
cb.setStyle("disabledTextFormat", menuTextFormat); 

video.addEventListener(Event.ACTIVATE, function (event) {cb.enabled = false;}) 
video.addEventListener(Event.COMPLETE, function (event) {cb.enabled = true; }) 

var arr:Array = new Array(); 
for (var i=0; i<10 ; i++) 
    arr.push({label:"asdfasdf", data:i}) 
cb.dataProvider = new DataProvider(arr); 

video.start() 

:最初のフレームに次のコードを記述

package { 

    import flash.display.MovieClip; 
    import flash.events.Event; 
    import flash.utils.Timer; 


    public class foobar extends MovieClip {  
     private var myTimer:Timer = new Timer(3000); 

     public function start() { 
      dispatchEvent(new Event(Event.ACTIVATE)) 
      myTimer.addEventListener("timer", timerHandler); 
         myTimer.start(); 
     } 

     public function timerHandler(evt:Event) { 
      myTimer.stop() 
      dispatchEvent(new Event(Event.COMPLETE)) 
     } 
    } 
} 
+0

最初のイベントが発生すると、ComboBoxは無効になります。menuTextFormat.align = "right"; –

+0

うまくいきませんでしたが、助言に感謝します!最初のディセーブル/イネーブルイベントの後、次のイベントでは正しく整列しているので、初めてスタイルを使用しないように見えます。 – face

+0

いくつかのコードを提供して、コンボボックスの有効化と無効化の方法を示すことができます。これは、私がサンプルを作成していて、うまく動作するためです。 –

答えて

0

私はコンボボックスが「準備ができた後、あなたがすべてのこれらのスタイルを適用する必要があると思います"(それはすぐにはないかもしれない)。

ラップ関数内のすべてのテキストの書式のものとコンボボックスが、それはADDED_TO_STAGEイベントの発射時に関数を呼び出すと、それが助けかどうかを確認...

cb.addEventListener(Event.ADDED_TO_STAGE, applyMyStyle); 


    function applyMyStyle(evt:Event){ 
     //apply style here to evt.target 
    } 

、これが役立つかどうかわからないが、それは価値があります一発。

+0

私もそれを試しましたが、それもうまくいきませんでした。もちろん、ステージ上にあればADDED_TO_STAGEはトリガーされません。addEventListenerの前に実行されるため、ASからコンポーネントを追加しようとしました。スタイルもそのように間違っています。ヒントをありがとう! – face

関連する問題