Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.02.2007, 02:33
firelord вне форума Посмотреть профиль Отправить личное сообщение для firelord Найти все сообщения от firelord
  № 11  
Ответить с цитированием
firelord

Регистрация: Nov 2006
Сообщений: 85
Цитата:
Сообщение от __etc
Эти компоненты изнутри вообще жуть и то, что они не работают, ничего удивительного
вот в это мне легко верится...

Старый 01.02.2007, 02:36
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 12  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от firelord
видимо моя ошибка была в самом начале - что я решил вообще делать компоненты - флеш, видать, исповедует собственную идеологию (в этом уже убедился на runtime sharing)... придется забыть все, о чем знал - и учиться программить "по-флешовски"
Я бы вообще написал бы свой фреймворк для компонентов, если бы стояла такая задача. Стандартные компоненты не идеальны, но вполне себе работают в стандартных ситуациях. А писать же свои компоненты надо по типу тех, что уже существуют, т.е. также криво.

Старый 01.02.2007, 02:41
firelord вне форума Посмотреть профиль Отправить личное сообщение для firelord Найти все сообщения от firelord
  № 13  
Ответить с цитированием
firelord

Регистрация: Nov 2006
Сообщений: 85
Цитата:
Сообщение от __etc
Я бы вообще написал бы свой фреймворк для компонентов, если бы стояла такая задача. Стандартные компоненты не идеальны, но вполне себе работают в стандартных ситуациях. А писать же свои компоненты надо по типу тех, что уже существуют, т.е. также криво.
нет, уж, увольте соблазн "переписать Windows" посещает многих - но практического смысла в этом немного, а меня лично интересует исключительно практический смысл ну, что - в Delphi компоненты тоже, мягко говоря, криво написаны - практически неприспособлены для наследования - так там, если нужно добавить в базовый класс вполне логичное расширение - берутся исходники базового класса - и на базе них создается новый класс вот что бывает, когда люди в школе не изучают SmallTalk...

Старый 01.02.2007, 08:57
7thsky™ вне форума Посмотреть профиль Отправить личное сообщение для 7thsky™ Найти все сообщения от 7thsky™
  № 14  
Ответить с цитированием
7thsky™
Flash Aксакал
 
Аватар для 7thsky™

Регистрация: Jun 2005
Сообщений: 636
Цитата:
Сообщение от firelord
обидно, когда тебя совсем за идиота принимают так тоже не работает - естественно
Что самое интересное - работает. рабочий пример (было впадлу писать в отдельном файле свой класс, так что сделал класс на ас1, но сути не меняет), открываете пустой фла, копируете код и запускаете.

Код:
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 + '"]');
}
Цитата:
я бы с радостью - да где эти FM взять? или вот эта груда бесполезных PDF у флеша называется мануалами?
Эти FM, очень просто найти -
F1 -> 'Using Components' -> 'Creating Components' - в этом разделе достаточно инфы, о том как построен их фрэймворк и как создавать свои компоненты, какие методы нужно переписывать и т.д.

з.ы. Вообще любой нормальный программер, сначала читает доки, а если бы вы их и читали, то не стали бы использовать конструкции типа on ('keyDown') {}

з.ы.ы. естественно можно предположить что все проблемы в вашем классе, так как у фрэймворка есть архитектура (пусть и дебильная, главное чтобы Костя нас не слышал ), и расширяя компоненты надо это учитывать.


Последний раз редактировалось 7thsky™; 01.02.2007 в 09:03.
Старый 01.02.2007, 09:13
7thsky™ вне форума Посмотреть профиль Отправить личное сообщение для 7thsky™ Найти все сообщения от 7thsky™
  № 15  
Ответить с цитированием
7thsky™
Flash Aксакал
 
Аватар для 7thsky™

Регистрация: Jun 2005
Сообщений: 636
Цитата:
Сообщение от firelord
то, что открывается по F1 я бы на месте разработчиков постыдился бы по F1 открывать включая 10 книжек, которые я успел скачать - и библии, и Using Components, и ActionScript reference и пр. нормального мануала по созданию компонент - близко нет. возможно, я пока не нашел
Возможно плохо искали, в Using Components достаточно всего, для создания всего чего нужно.

Цитата:
видимо моя ошибка была в самом начале - что я решил вообще делать компоненты - флеш, видать, исповедует собственную идеологию (в этом уже убедился на runtime sharing)... придется забыть все, о чем знал - и учиться программить "по-флешовски"
Либо вы не правильно выбрали технологию, делайте все на AJAX (хотя с ней вам будет еще трудней, там тот же прототипный язык, куча визуальных фрэймворков, без нормального описания, куча разных моделей DOM'ов которые тоже нормально негде не описаны), либо вам придется почитать чуть чуть и понять особенности (они есть) флэша.

Старый 01.02.2007, 15:32
firelord вне форума Посмотреть профиль Отправить личное сообщение для firelord Найти все сообщения от firelord
  № 16  
Ответить с цитированием
firelord

Регистрация: Nov 2006
Сообщений: 85
Цитата:
Сообщение от 7thsky™
Что самое интересное - работает. рабочий пример (было впадлу писать в отдельном файле свой класс, так что сделал класс на ас1, но сути не меняет), открываете пустой фла, копируете код и запускаете.
вот за пример спасибо! посижу, разберусь, в каком месте у меня руки кривые видимо, я неправильно применял addEventListener.

Старый 01.02.2007, 15:46
firelord вне форума Посмотреть профиль Отправить личное сообщение для firelord Найти все сообщения от firelord
  № 17  
Ответить с цитированием
firelord

Регистрация: 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();
пример, конечно, условный - но должен, мне кажется, передавать общую схему. так вот - focusIn тут ловится, а keyDown - нет.
не подскажите еще разочек (надеюсь, последний) - в каком месте ДНК у меня ошибка?

Старый 01.02.2007, 15:49
firelord вне форума Посмотреть профиль Отправить личное сообщение для firelord Найти все сообщения от firelord
  № 18  
Ответить с цитированием
firelord

Регистрация: Nov 2006
Сообщений: 85
да, и раз уж я все равно спросил - самый общий вопрос: что нужно, чтобы еще и мышку компонентой ловить?

Старый 01.02.2007, 16:47
7thsky™ вне форума Посмотреть профиль Отправить личное сообщение для 7thsky™ Найти все сообщения от 7thsky™
  № 19  
Ответить с цитированием
7thsky™
Flash Aксакал
 
Аватар для 7thsky™

Регистрация: Jun 2005
Сообщений: 636
Цитата:
Сообщение от firelord
я все-таки осмелюсь задать еще вопрос вот в Вашем, уважаемый 7thsky™, примере у меня работало - а в моей компоненте не удается повесить внешний листенер

пример, конечно, условный - но должен, мне кажется, передавать общую схему. так вот - focusIn тут ловится, а keyDown - нет.
не подскажите еще разочек (надеюсь, последний) - в каком месте ДНК у меня ошибка?
Опять таки все очень просто:
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 (расширенние компонент).

Старый 01.02.2007, 17:20
firelord вне форума Посмотреть профиль Отправить личное сообщение для firelord Найти все сообщения от firelord
  № 20  
Ответить с цитированием
firelord

Регистрация: Nov 2006
Сообщений: 85
ну, на самом-то деле я его создаю в редакторе - как обычную компоненту - тащу на stage. т.е. я полагаю - механизм создания в данном случае не важен - важнее, что keyDown в этом случае не отрабатывается

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:30.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:30.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.