вівторок, Березень 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, Корисні блохи | Коментарів: 50 »
понеділок, Березень 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, Корисні блохи | Коментарів: 52 »
п’ятниця, Березень 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, Корисні блохи | Коментарів: 45 »
четвер, Березень 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, Знайдені блохи | Коментарів: 47 »
середа, Березень 5, 2008
trace( Date( new Date() ) is Date );
Що буде в output?
Далі відповідь
Читати далі »
Теґи: as, cast, Date()
Категорії: ActionScript 3.0, Знайдені блохи, Спіймані блохи, Загадки | Коментарів: 58 »