вторник, март 11, 2008
Иногда нам нужно знать произошло ли событие на подписчике или пришло вследствие bubbling. Например, нам нужно отследить нажатие мыши на stage, но нам точно нужно знать что пользователь кликнул именно на stage, а не на его child. Мы конечно можем сделать
stage.mouseChildren = false;
но это чаще всего не подходит.
Можно поступить двумя равносильными способами.
В обработчике для stage выполняем проверку на равенство event.target с event.currentTarget:
- function stageClickHandler(event:MouseEvent):void
- {
- if(event.target != event.currentTarget)
-
- return;
- // Your code here
- }
Или проверим какая фаза event flow. Если она равна 2 (target phase), то событие произошло именно на stage. В ином случае, прекращаем выполнение обработчика:
- function stageClickHandler(event:MouseEvent):void
- {
- if(event.eventPhase != 2)
-
- return;
- // Your code here
- }
Подробнее про событийную модель в ActionScript 3.0 Вы можете почитать в докладе Константина Ковалёва.
Теґи: bubbling, eventPhase, [Event]
Категорії: ActionScript 3.0, Полезные блохи | Немає коментарів »
понедельник, март 10, 2008
Вы никогда не задумывались как может setter (в mxml), например width, который принимает Number, может принимать значения вида ‘50%’?
А всё очень просто
Существует метатег [PercentProxy], который как параметр принимает имя метода, который будет задействован, если значение будет задано в процентах.
Пример. Созданим класс FleasCatcher:
- package
- {
- import mx.containers.Canvas;
- public class FleasCatcher extends Canvas
- {
-
- [PercentProxy(”percentFleasCountInMyHead“)]
-
- public function set fleasCountInMyHead(value:Number):void
-
- {
-
-
- trace(”number: “+value);
-
- }
-
- public function set percentFleasCountInMyHead(value:Number):void
-
- {
-
-
- trace(”percent: “+value);
-
- }
- }
- }
Теперь мы можем написать так:
- <?xml version=”1.0″ encoding=”utf-8″?>
- <mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute” xmlns:local=”*”>
- <local:FleasCatcher fleasCountInMyHead=”1000” />
- </mx:Application>
Или так:
- <?xml version=”1.0″ encoding=”utf-8″?>
- <mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute” xmlns:local=”*”>
- <local:FleasCatcher fleasCountInMyHead=”99%” />
- </mx:Application>
Теґи: MXML, setter, [PercentProxy]
Категорії: MXML, Полезные блохи | Один коментар »
пятница, март 7, 2008
Адобовцы довольно часто используют namespace mx_internal для внутреннего общения между компонентами. Но и нам, иногда, полезно поиспользовать этот namespace. Например, нам нужно в Button.label отобразить html-текст.
- <?xml version=”1.0″ encoding=”utf-8″?>
- <mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”vertical”>
- <mx:Button id=”helloB” label=”Hello World!”/>
- <mx:creationComplete>
-
- <![CDATA[
-
- helloB.getTextField().htmlText = “<u><i>H</i>ello World!</u>”;
-
- // если бы мы не применили бы namespace то можно было бы написать так:
-
- // helloB.mx_internal::getTextField().htmlText = “<u><i>H</i>ello World!</u>”;
-
- ]]>
- </mx:creationComplete>
- <mx:Script>
-
- <![CDATA[
- import mx.core.mx_internal; // импотируем namespace
-
- use namespace mx_internal; // применяем его
-
- ]]>
- </mx:Script>
- </mx:Application>
Но это нужно использовать крайне осторожно, т.к. очень легко поламать компонентину (т.к. запуск подобного метода выбивается из цикла жизни компонента) или просто при следующем обновлении компонент просто переопределит то, что Вы задали в значение, которое было до использования метода.
Категорії: Flex Framework 3, Полезные блохи | Немає коментарів »
четверг, март 6, 2008
Невеличка помилка у допомозі Flex Builder 3. Там сказано, що у IOErrorEvent є властивість id:
id:int (default = 0) — A reference number to associate with the specific error.
Також є такий самий параметр у конструкторі:
public function IOErrorEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, text:String = "", id:int = 0)
Але насправді ніякого id немає. Це підтверджують тести та локальна допомога Flash CS3 (але на liveDocs для Flash CS3 теж помилка ).
Чи може я помиляюсь?
Теґи: Flex Builder Help, IOErrorEvent.id
Категорії: Flex Builder 3, Найденные блохи | Один коментар »
среда, март 5, 2008
trace( Date( new Date() ) is Date );
Що буде в output?
Далі відповідь
Читати далі »
Теґи: as, cast, Date()
Категорії: ActionScript 3.0, Найденные блохи, Словленные блохи, Загадки | Немає коментарів »