Компонент силы, чтобы перерисовать его фокус - PullRequest
1 голос
/ 23 марта 2011

У меня есть еще один вопрос "Как мне?" :) Предположим, у меня есть компонент, и я хочу изменить его цвет фокуса во время выполнения. Вот пример для вас (я исключил все кнопки и тому подобное, чтобы компонент не терял фокус, потому что в этом случае он отлично меняет свой цвет):

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                creationComplete="init()">
    <mx:Script><![CDATA[    
        private function init():void {
            //putting focus inside needed component
            focusTest.setFocus();
            focusTest.setSelection(0, 0);

            // creates a new Timer
            var minuteTimer:Timer = new Timer(1000, 30);

            // designates listeners for the interval and completion events
            minuteTimer.addEventListener(TimerEvent.TIMER, onTick);
            minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);

            // starts the timer ticking
            minuteTimer.start();
        }    
        public function onTick(event:TimerEvent):void {
            // displays the tick count so far
            trace("tick " + event.target.currentCount);
            if (focusTest.getStyle('focusColor') != 0x008CEA) {
                focusTest.setStyle('focusColor', 0x008CEA);
            } else {
                focusTest.setStyle('focusColor', 0xFF0000);
            }
            //Update everything somehow :)            
        }    
        public function onTimerComplete(event:TimerEvent):void {
            trace("Time's Up!");
        }            
        ]]></mx:Script>
    <mx:TextInput id="focusTest"/>
</mx:Application>

Что у меня есть: Таймер работает. Свойство меняется (вы можете видеть это, например, при переключении вкладок в вашем браузере ... просто ловите правильное состояние, когда цвет меняется).

Что я хочу: Как сделать так, чтобы этот фокус перерисовывался без магии (я перепробовал все методы, начиная с "validate", я пытался вызвать updateDisplayList() на все приложение, я пытался позвонить styleChanged ... aggrrh .. У меня нет идей :)).

Есть мысли?

Любая помощь, как обычно, очень ценится:)

1 Ответ

1 голос
/ 23 марта 2011

Если вы используете themeColor и focusTest.drawColor(true), все работает нормально.Вы должны использовать drawFocus () для его перекрашивания, и я не думаю, что focusColor является атрибутом setStyle Flex 3 (используется только во Flex 4).

Сложно определить, потому что если вы используете неверные атрибуты setStyle / getStyle, Flex не выдает никаких ошибок, он просто игнорирует их!

...