![]() |
|
||||||||||
|
|||||
|
Начинаю работать с FD, есть пара вопросов:
1. Как связать вместе класс из swc и класс в проекте. Допустим есть у меня какой то шарик, я ему делаю Export for AS, линкую его с классом который создал. Но насколько я понял в FD такое не прокатывает и надо делать extend. А без него никак? 2. Можно ли написать Frame Script в объекте который экспортируется в swc, а затем обратиться к нему из FD? 3. Где можно поменять горячие клавиши? |
|
|||||
|
а немного поподробнее о композициях можно?
|
|
|||||
|
Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
|
package classes { import flash.utils.flash_proxy; import flash.events.Event; import flash.events.EventDispatcher; import flash.events.IEventDispatcher; import flash.utils.Proxy; /** * ... * @author Scarbo * используем композицию, чтобы пользоваться благами и событийной модели и прокси! */ public class CustomProxy extends Proxy implements IEventDispatcher { private var _dispatcher:EventDispatcher; private var _data:Object; public function CustomProxy() { super(); _dispatcher = new EventDispatcher(); _data = { }; } /*вот тут, наследование*/ override flash_proxy function getProperty(name:*):*{ if(name in _data){ return _data[name]; }else{ return null; } } override flash_proxy function setProperty(name:*, value:*):void { _data[name] = value; dispatchEvent(new Event(Event.CHANGE)); } /* INTERFACE flash.events.IEventDispatcher */ /*а тут, композиция*/ public function dispatchEvent(event:Event):Boolean { return _dispatcher.dispatchEvent(event); } public function hasEventListener(type:String):Boolean { return _dispatcher.hasEventListener(type); } public function willTrigger(type:String):Boolean { return _dispatcher.willTrigger(type); } public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void { _dispatcher.removeEventListener(type, listener, useCapture); } public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void { _dispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference); } } }
__________________
Я просто добрый шутник. |
|
|||||
|
эээ....не въехал. И что теперь с этим классом CustomProxy делать? Экстендится от него?
|
|
|||||
|
Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
|
Зачем? Это просто, класс-пример, он не имеет практической пользы.Типа Object, который будет выкидывать Event.CHANGE, всякий раз, когда добавляешь или изменяешь значение.Пример:
var cProxy:CustomProxy = new CustomProxy(); cProxy.addEventListener(Event.CHANGE, _changeHandler); cProxy['asd'] = 123; cProxy['asd'] = 234; cProxy['dsa'] = 'rtez'; private function _changeHandler(e:Event):void{trace(e);} Смысл композиции - добавить функционал классу, который не может быть получен от наследования. К примеру класс наследуется от Sprite, а хочет уметь музыку грузить, делаешь интерфейс ISound и композицию с Sound, и твой DisplayObject теперь еще и музыку грузит.
__________________
Я просто добрый шутник. Последний раз редактировалось scarbo; 23.03.2011 в 01:20. |
|
|||||
|
scarbo, немного неудачный пример в этой теме
![]() Universe, проще говоря, мы добавляем графику в класс, вместо того, чтобы от нее наследоваться. Вот самые простейшие примеры: Наш класс package { import flash.display.DisplayObjectContainer; import flash.display.MovieClip; import lib.myMC; public class MyClass { private var obj:MovieClip; private var host:DisplayObjectContainer; public function MyClass(host:DisplayObjectContainer) { // host - ссылка на контейнер, в котором будем размещать графику, // например экземпляр главного класса this.host = host; // myMC - класс, прилинкованный к графике в библиотеке obj = new myMC(); host.addChild(obj); // дальше управляем уже obj } } } package { import flash.display.MovieClip; import flash.display.Sprite; import lib.myMC; public class MyClass extends Sprite { private var obj:MovieClip; public function MyClass() { // myMC - класс, прилинкованный к графике в библиотеке obj = new myMC(); addChild(obj); // дальше управляем уже obj } } }
__________________
тут я |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Раздел был выбран не верно.
Один вопрос - одна тема. |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|