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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.05.2007, 14:53
ivenhoe вне форума Посмотреть профиль Отправить личное сообщение для ivenhoe Найти все сообщения от ivenhoe
  № 1  
Ответить с цитированием
ivenhoe

Регистрация: Jan 2004
Адрес: Магнитогорск
Сообщений: 19
Отправить сообщение для ivenhoe с помощью ICQ
По умолчанию Мувики-объекты - вопрос по шаблонам проектирования

Многоуважаемые программисты!
Созрел вопрос. Флэшью балуюсь давно и не безрезультатно, но серьезных достижений не добился. Однако теперь вот потребовалось углубиться, в чем рассчитываю на минимальную, но квалифицированную помощь общественности.

Вопрос, так сказать, идеологический.

Мне известно, что напрямую наследоваться от MovieClip нельзя. Точнее, получится не клип, а что-то не работоспособное. Был какой-то способ (вроде через attachMovie), но я сейчас не вспомню... Собственно, вопрос в другом (хотя буду благодарен за напоминание ответа).

Имеется некий класс, имеющий отображение. Грубо говоря, например, класс "геометрическая фигура". Т.е. в библиотеку там помещать просто нечего, предполагается, что экземпляр будет отрисовываться динамически, в зависимости от конкретных свойств конкретного объекта.

Как удобнее всего в реализации поступить:

1. Все-таки поместить в библиотеку некоторый пустой клип, и attach его с неким классом
2. Класс и мувик - совершенно разные вещи, т.е. пользовательским кодом создается мувик, и объекту (допустим, через конструктор) передавать ссылку на этот мувик
3. Объект сам в конструкторе создает пустой мувик и рисует в нем что захочет

Вобщем, как наиболее удобно приладить костыль к флэшу вместо логично удобной, но невозможной конструкции навроде
Код:
class MyMovie extends MovieClip
{
...
}
И, так сказать, еще один вопрос (из одной задачи просто).
У пустого клипа (созданного через createEmptyMovieClip) размеры нулевые. Как их не присваивай, они нулевыми и остаются, пока ничего не нарисуешь в нем. А нужно бы заранее знать заданные размеры.

Пример на основе той же задачи: пользовательский код создает объект класса "геометрическая фигура", и задает ее размеры. Объект, смотря на свои размеры, отрисовывает фигуру, чтобы в них вписаться, грубо говоря.

Можно, конечно, к мувику присобачить дополнительные аттрибуты типа mc.originalWidtр, но, возможно, существует более изящный и широкоиспользуемый способ?

Старый 03.05.2007, 15:10
ivenhoe вне форума Посмотреть профиль Отправить личное сообщение для ivenhoe Найти все сообщения от ivenhoe
  № 2  
Ответить с цитированием
ivenhoe

Регистрация: Jan 2004
Адрес: Магнитогорск
Сообщений: 19
Отправить сообщение для ivenhoe с помощью ICQ
Хотя, пардон, по первой части в факе вроде нашел...
По второй части - вопрос еще актуален :-)

Старый 03.05.2007, 15:22
lowka вне форума Посмотреть профиль Отправить личное сообщение для lowka Найти все сообщения от lowka
  № 3  
Ответить с цитированием
lowka

Регистрация: Sep 2006
Сообщений: 256
[удалено]

Создайте класс у которого будет ссылка на мувик, а у класса определите нужные свойства и работайте уже с ним.


Последний раз редактировалось lowka; 03.05.2007 в 15:30.
Старый 03.05.2007, 15:31
ivenhoe вне форума Посмотреть профиль Отправить личное сообщение для ivenhoe Найти все сообщения от ivenhoe
  № 4  
Ответить с цитированием
ivenhoe

Регистрация: Jan 2004
Адрес: Магнитогорск
Сообщений: 19
Отправить сообщение для ivenhoe с помощью ICQ
Ага, спасибо. Это именно тот метод, который я не смог припомнить. Но повторюсь, в библиотеку по сути помещать нечего, разве что для проформы - пустой мувик...
С другой стороны, не зря же люди изобретают собственные способы вроде http://flasher.ru/forum/showpost.php...47&postcount=6

Старый 03.05.2007, 15:35
Tardos Mors вне форума Посмотреть профиль Отправить личное сообщение для Tardos Mors Найти все сообщения от Tardos Mors
  № 5  
Ответить с цитированием
Tardos Mors

Регистрация: Jul 2006
Адрес: Новосибирск
Сообщений: 530
Отправить сообщение для Tardos Mors с помощью ICQ
Цитата:
Сообщение от ivenhoe
Мне известно, что напрямую наследоваться от MovieClip нельзя. Точнее, получится не клип, а что-то не работоспособное.
Вам не правильно известно. От MovieClip наследоваться можно, только нужно создать экземпляр этого символа в библиотеке и прописать ему класс.
Создавать экземпляры такого класса нельзя через new (так же как и MovieClip), а нужно использовать attachMovie.
Цитата:
У пустого клипа (созданного через createEmptyMovieClip) размеры нулевые. Как их не присваивай, они нулевыми и остаются, пока ничего не нарисуешь в нем. А нужно бы заранее знать заданные размеры.
А разеры чего задавать, если мувиклип пуст?


Последний раз редактировалось Tardos Mors; 03.05.2007 в 15:37.
Старый 03.05.2007, 16:16
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Код:
var myClass:MyClass = MyClass(this.attachMovie(…));

Старый 04.05.2007, 10:47
ivenhoe вне форума Посмотреть профиль Отправить личное сообщение для ivenhoe Найти все сообщения от ivenhoe
  № 7  
Ответить с цитированием
ivenhoe

Регистрация: Jan 2004
Адрес: Магнитогорск
Сообщений: 19
Отправить сообщение для ivenhoe с помощью ICQ
Цитата:
Сообщение от Tardos Mors
Вам не правильно известно. От MovieClip наследоваться можно, только нужно создать экземпляр этого символа в библиотеке и прописать ему класс.
Дело в том, что клип изначально абсолютно пустой. Помещать в библиотеку пустой символ? Как-то не очень... Впрочем, идея со статическим методом меня устроила (найдено в факе). Но любопытно, кто еще как делает.
Цитата:
Сообщение от Tardos Mors
Создавать экземпляры такого класса нельзя через new (так же как и MovieClip), а нужно использовать attachMovie.

А разеры чего задавать, если мувиклип пуст?
Грубо говоря, размеры "области рисования". К примеру, опять же, пользователь создает экземпляр класса "геометрическая фигура" и задает ему параметр - "рисовать треугольник". Затем устанавливает размеры области рисования, объект смотрит на свои размеры (заданные пользователем) и вписывается в них.

Старый 04.05.2007, 18:08
Tardos Mors вне форума Посмотреть профиль Отправить личное сообщение для Tardos Mors Найти все сообщения от Tardos Mors
  № 8  
Ответить с цитированием
Tardos Mors

Регистрация: Jul 2006
Адрес: Новосибирск
Сообщений: 530
Отправить сообщение для Tardos Mors с помощью ICQ
Цитата:
Сообщение от ivenhoe
объект смотрит на свои размеры
Объект может посмотреть на любые переменные, не обязательно на _x и _y. До того, как фигура будет отрисована, размеры можно хранить где угодно.

Старый 11.05.2007, 08:45
ivenhoe вне форума Посмотреть профиль Отправить личное сообщение для ivenhoe Найти все сообщения от ivenhoe
  № 9  
Ответить с цитированием
ivenhoe

Регистрация: Jan 2004
Адрес: Магнитогорск
Сообщений: 19
Отправить сообщение для ivenhoe с помощью ICQ
Гм... Я не совсем понял, как правильно-то...
Думал, что так:
Код:
class MyClass extends MovieClip
{
      function MyClass(par1, par2) {...}
      ...
}

// В библиотеке есть символ MySmb
var mc:MyClass = new MyClass(1, 2);
_root.attachMovie("MySmb", "mysmb_instance", _root.getNextHighestDepth(), mc)
Однако
Цитата:
Сообщение от Tardos Mors
Создавать экземпляры такого класса нельзя через new (так же как и MovieClip), а нужно использовать attachMovie.
Собственно, как-нибудь-то я все таки создам и приаттачу... Однако хотелось бы чтобы логика конструктора выполнялась при этом. Делать дополнительный метод типа Init() конечно можно, но как-то неспортивно.

Если это не слишком затруднит общественность, не могла ли бы она привести пример псевдокода с attachMovie и конструктором класса?

Старый 11.05.2007, 09:32
Aziz Zaynutdinoff вне форума Посмотреть профиль Отправить личное сообщение для Aziz Zaynutdinoff Посетить домашнюю страницу Aziz Zaynutdinoff Найти все сообщения от Aziz Zaynutdinoff
  № 10  
Ответить с цитированием
Aziz Zaynutdinoff
 
Аватар для Aziz Zaynutdinoff

Регистрация: Feb 2006
Адрес: Moscow
Сообщений: 552
Код:
class MyClass
{
    function MyClass(myWidth:Number, myHeight:Number)
    {
        //рисуем в заданной вами ширине и высоте, зачем же использовать _width, _height? :)
    }
}

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

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

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


 


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


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