![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2006
Сообщений: 85
|
Цитата:
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
|
|
|||||
|
Регистрация: Nov 2006
Сообщений: 85
|
Цитата:
соблазн "переписать Windows" посещает многих - но практического смысла в этом немного, а меня лично интересует исключительно практический смысл ну, что - в Delphi компоненты тоже, мягко говоря, криво написаны - практически неприспособлены для наследования - так там, если нужно добавить в базовый класс вполне логичное расширение - берутся исходники базового класса - и на базе них создается новый класс вот что бывает, когда люди в школе не изучают SmallTalk... |
|
|||||
|
Flash Aксакал
Регистрация: Jun 2005
Сообщений: 636
|
Цитата:
import mx.core.UIComponent;
// нужно для всех прибамбасов
// макромедийного фрэймворка
mx.core.ext.UIComponentExtensions;
mx.core.ext.UIObjectExtensions;
var MyClass:Function = function () {super ();};
var mc:MovieClip = this.createEmptyMovieClip ('t', 1);
MyClass.prototype = new UIComponent ();
MyClass.prototype.size = function () {
super.size ();
var mc:MovieClip = this;
mc.clear ();
mc.beginFill(this.getStyle ('backgroundColor'), 50);
mc.drawRect (0, 0, this.width, this.height);
mc.endFill ();
};
mc.__proto__ = MyClass.prototype;
mc.__constructor__ = MyClass;
mc.constructor = MyClass;
MyClass.apply (mc);
var uic:UIComponent = UIComponent (mc);
uic.addEventListener ('keyDown', this);
uic.addEventListener ('focusIn', this);
uic.addEventListener ('focusOut', this);
uic.addEventListener ('resize', this);
uic.setStyle ('backgroundColor', 0x000000);
uic.setSize (300, 400);
uic.setFocus ();
function handleEvent (event:Object):Void {
trace ('[Event type="' + event.type + '", target="' + event.target + '"]');
}
Цитата:
F1 -> 'Using Components' -> 'Creating Components' - в этом разделе достаточно инфы, о том как построен их фрэймворк и как создавать свои компоненты, какие методы нужно переписывать и т.д. з.ы. Вообще любой нормальный программер, сначала читает доки, а если бы вы их и читали, то не стали бы использовать конструкции типа on ('keyDown') {} з.ы.ы. естественно можно предположить что все проблемы в вашем классе, так как у фрэймворка есть архитектура (пусть и дебильная, главное чтобы Костя нас не слышал ), и расширяя компоненты надо это учитывать.Последний раз редактировалось 7thsky™; 01.02.2007 в 09:03. |
|
|||||
|
Flash Aксакал
Регистрация: Jun 2005
Сообщений: 636
|
Цитата:
Цитата:
|
|
|||||
|
Регистрация: Nov 2006
Сообщений: 85
|
Цитата:
видимо, я неправильно применял addEventListener. |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 85
|
я все-таки осмелюсь задать еще вопрос
вот в Вашем, уважаемый 7thsky™, примере у меня работало - а в моей компоненте не удается повесить внешний листенер ![]() class clScrollArea extends mx.core.UIComponent {
...
}
var scrollArea=new clScrollArea();
var listener = new Object();
listener.keyDown = function () {
trace("keyDown");
}
listener.focusIn = function() {
trace("focused");
}
scrollArea.addEventListener("keyDown",listener);
scrollArea.addEventListener("focusIn",listener);
scrollArea.setFocus();
не подскажите еще разочек (надеюсь, последний) - в каком месте ДНК у меня ошибка? ![]() |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 85
|
да, и раз уж я все равно спросил - самый общий вопрос: что нужно, чтобы еще и мышку компонентой ловить?
|
|
|||||
|
Flash Aксакал
Регистрация: Jun 2005
Сообщений: 636
|
Цитата:
F1 > Using Components > Creating Components > Creating a component movie clip class clScrollArea extends mx.core.UIComponent {
public static var symbolName:String = 'тут надо записать linkageID';
public static var symbolOwner:Function = clScrollArea;
...
}
var scrollArea:clScrollArea =
clScrollArea (createClassObject (clScrollArea, 'scrollAreaInstance', 1));
var listener = new Object();
listener.keyDown = function () {
trace("keyDown");
}
listener.focusIn = function() {
trace("focused");
}
scrollArea.addEventListener("keyDown",listener);
scrollArea.addEventListener("focusIn",listener);
scrollArea.setFocus();
Опять таки отсылаю вас на RTFM, так как если бы вы читали то бы прочитали что все компоненты по архитектуре макромедийных компонент - визуальные, то есть в конечном счете наследуются от MovieClip и что единственный способ создать визуальный объект воспользовать фабричным методом класса MovieClip или createClassObject (расширенние компонент). |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 85
|
ну, на самом-то деле я его создаю в редакторе - как обычную компоненту - тащу на stage. т.е. я полагаю - механизм создания в данном случае не важен - важнее, что keyDown в этом случае не отрабатывается
|
![]() |
![]() |
Часовой пояс GMT +4, время: 01:30. |
|
|
« Предыдущая тема | Следующая тема » |
|
|