2012-01-18 4 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 이벤트를 전달하는 간단한 구성이다. 그 코드 다음에, 나는 새로운 DataProvider를 제공하고 이벤트를 전달하는 비디오 구성 요소에 카메라를 연결합니다.

플래시가 시작되면 스타일이 활성화되지 않고 텍스트가 왼쪽으로 정렬됩니다. 첫 번째 이벤트가 발생하면 ComboBox는 비활성화됩니다. 여전히 왼쪽 정렬. 그 후 두 번째 이벤트가 활성화되고 스타일이 적용되면 오른쪽 정렬됩니다.

처음부터 제대로 정렬하고 싶습니다. AS에서 구성 요소를 비활성화/활성화하려고 시도했지만 작동하지 않았으므로 스타일을 적용하는 데 약간의 시간이 필요합니다.

또한 스타일이 설정되어 있는지 확인하고 타이머를 작성하고 정렬을 추적했지만 올바른 스타일이므로 스타일이 사용되지 않습니다.

AS에서 addChild를 사용하여 구성 요소를 수동으로 추가하려고 시도했지만 성공하지 못했습니다.

어떻게 스타일을 사용하도록 할 수 있습니까?

아무쪼록 감사드립니다.

환경 :

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

업데이트 : 콤보 상자 (인스턴스 이름 CB)를 드롭 무대에

및 명명 된 라이브러리의 심볼 : 나는 간단한 개념을 만드는 방법을 알아 냈 foobar (인스턴스 이름 비디오). , 그 후

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() 

foobar.as을 만들고 다음 쓰기 : 첫 번째 프레임에 다음과 같은 코드를 작성

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

시도해 보았지만 작동하지 않았습니다. 물론 그것이 addEventListener 전에 실행되기 때문에 그것이 ADDED_TO_STAGE를 트리거하지 않을 것이라는 점에 유의하십시오. 그래서 AS에서 구성 요소를 추가하려고했습니다. 스타일도 그렇게 잘못되었습니다. 팁 고마워! – face

관련 문제