вівторок, Квітень 15, 2008
Так, в AIR є можливість використовувати своє контекстне меню, додавати вкладені меню і т.д. Ми можемо навіть відображати його, коли нам завгодно, а не тільки по правому кліку. Для цього у класу NativeMenu є метод:
- NativeMenu.display(stage:Stage, stageX:Number, stageY:Number):void
Все було б добре, але є одне але
Як Ви бачите метод display() приймає першим параметром Stage, але у SystemTrayIcon немає stage
Тобто, якщо нам потрібно відобразити меню біля трею (за допомогою display()), то треба використовувати Application.application.stage, але тоді треба бути поміркувати як розташувати меню
Адже координати SystemTrayIcon невідомі…
Теґи: AIR, NativeMenu, SystemTrayIcon
Категорії: AIR, Знайдені блохи | Немає коментарів »
четвер, Березень 27, 2008
Якщо Ви проставите метатеґ [MIXIN] у Вашому класі (трохи вище визначення класу), то при старті Вашого Flex-застосування буде викликана статична функція init():
- public static function init(root:DisplayObject):void
Викличе її SystemManager.
У допомозі Flex є згадки про цей метатеґ, знайти їх можна виконавши пошук по слову mixin 
Теґи: [MIXIN]
Категорії: Flex Builder 2, Flex Builder 3, Flex Framework 3, Корисні блохи | Коментарів: 7 »
п’ятниця, Березень 21, 2008
Ми знаємо, що при вбудуванні swf за допомогою теґу [Embed] увесь код, який був у swf-ці, втрачається. Є один спосіб як зберегти код.
Спочатку створимо у Flash IDE флешку, головним класом якої буде, наприклад, assets.Flea. В цьому класі є метод startJumping(), який просто починає програвання флешки. Назвемо файл flea.swf.
Тепер вбудуємо flea.swf в будь-який клас у Flex-проекті:
- [Embed(”assets/flea.swf”, mimeType=”application/octet-stream”)]
- private var FleaAsset:Class;
mimeType=”application/octet-stream” дає зрозуміти компілятору Flex, що вбудування потрібно робити без будь-якої конвертації даних.
Тепер в FleaAsset ми маємо клас ByteArrayAsset, тобто, практично ByteArray.
Далі завантажуємо екземпляр FleaAsset до Loader за допомогою loadBytes():
- var currLoader:Loader = new Loader();
- var ldrContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
- currLoader.loadBytes( new FleaAsset(), ldrContext );
ldrContext ми використовуємо, щоб бути впевненими, що клас, який знаходиться в FleaAsset буде тим самим, що і в Flex проекті.
Далі, щоб клас із FleaAsset з’явився для нашого використання, нам потрібно почекати один кадр. Це не дуже добре, але як це обійти я не знаю.
- var sprite:Sprite = new Sprite();
- sprite.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
Далі, ми просто створюємо екземпляр класу assets.Flea та використовуємо його як забажаємо. Уся графічна частина цього класу, яку ми створили у Flash IDE, буде присутня
- import assets.Flea;
- function enterFrameHandler(event:Event):void
- {
- var flea:Flea = new Flea();
- addChild(flea);
- flea.startJumping();
- sprite.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
- }
Я зробив приклад такої собі бібліотеки, яка може спростити роботу з убудованими swf.
Щоб знати більше раджу почитати це (англійською):
Теґи: application/octet-stream, ByteArrayAsset, Flash IDE, mimeType, [Embed]
Категорії: ActionScript 3.0, Flash IDE, Flex Builder 2, Flex Builder 3, Корисні блохи | Один коментар »
четвер, Березень 20, 2008
В ActionScript проекті (мається на увазі проект в Flex Builder) параметри swf файлу Ви можете встановити за допомогою метатеґу SWF:
[SWF(width="800", height="600", frameRate="30", backgroundColor="#FFFFFF")]
Помістіть його перед головним класом.
Теґи: metatag, SWF
Категорії: Flex Builder 2, Flex Builder 3, Корисні блохи | Немає коментарів »
середа, Березень 19, 2008
Я практично впевнений, що Ви хоч раз шукали метод removeAllChildren() у DisplayObjectContainer
Ось, на мою думку, найелегантніша реалізація (підказали Адобовці):
- public function removeAllChildren():void
- {
- while (numChildren > 0)
- removeChildAt(0);
- }
Теґи: DisplayObjectContainer.removeAllChildren()
Категорії: ActionScript 3.0, Корисні блохи | Коментарів: 4 »