|
|
|||||
Регистрация: Aug 2003
Адрес: Украина, Львов
Сообщений: 129
|
attachMovie в классе (Class)
Народ такая проблема. Помогите плиз.. Читал форум может не дочитал чего...
код класса: class buttonery extends MovieClip { static var levelx =50; function buttonery (pictype:String, px:Number, py:Number) { var P:MovieClip; P.attachMovie ( pictype, "picc", levelx++ ); P.picc._x=px; P.picc._y=py; } } //// код на первом кадре //// var B1:buttonery = new buttonery ("coffee", 30,100 ); //// var B2:buttonery = new buttonery ("orange", 200,100); На _root - ложатся... ( _root.attachMovie ( pictype, "picc", levelx++ ); ) но ето не дело... чё тут делать??? Последний раз редактировалось Lorex; 20.12.2007 в 18:22. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Вы где-нибудь видели стандартный класс, у которого имя с маленькой буквы начинается? Так с какого перепоя вы называете классы с маленькой буквы?
В AS1/AS2 наследники MovieClip не создаются через оператор new. |
|
|||||
Modus ponens
|
ну, или еще вариант:
клип, к которому аттачится клип из библиотеки (Р) должен существовать до того как вы вызываете на нем аттачМуви. Т.е. его нужно либо в класе либо вне, но создать и либо передавать классу ссылку на него либо ссылку на клип, в котором нужно его создать соответственно.
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Aug 2003
Адрес: Украина, Львов
Сообщений: 129
|
Ларчик открыл таким кодом
class Buttonery extends MovieClip { function Buttonery (pictype:String, px:Number, py:Number, sx:Number, sy:Number) { var nameclip = _root.getNextHighestDepth(); var nmm = "Buttonery_container"+nameclip; _root.createEmptyMovieClip( nmm , nameclip); eval(nmm).attachMovie (pictype , "picc", nameclip++ ); eval(nmm).picc._x=px; eval(nmm).picc._y=py; eval(nmm).picc._xscale =sx; eval(nmm).picc._yscale =sy; //trace (eval(nmm)); } } а помог мне тут еще и trace (eval(nmm)); он выдал _level0.Buttonery_container1 _level0.Buttonery_container0 .... а я дописывал еще _root... и флеш, зараза, не глотнул Ларчик открылся! СПАСИБО ВСЕМ!!!! |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
attachMovie между прочим возвращает ссылку на созданный клип, как и createEmptyMovieClip, а вы извращаетесь в eval, да ещё в AS2. Ужас.
|
|
|||||
Modus ponens
|
Извращение...
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Aug 2003
Адрес: Украина, Львов
Сообщений: 129
|
не понял...
об"ясните тупоголовому процедурщику... в своем варианте я принимаю (передаю) аргументы function Buttonery (pictype:String, px:Number, py:Number, sx:Number, sy:Number) а тут вы принимаете (передаете) как аргумент мувик... как ето работает? если так написан код вроде как понимаю логику... но мне нужно передать в функцию-конструктор параметры имя клипа, ширинаX, ширинаY.... Разжуйте для тормоза .. код в создания екземпляра и код класса... А то фрагменты одни.... Ну начинал я с eval... ниче не сделать... Спасибо! |
|
|||||
Modus ponens
|
Передается не клип, а ссылка на него. Т.е. все сложные объекты (не строки\числа\константы) не дублируются при операциях с ними.
Пример: eval - функция не рекомендованая к употреблению. И ее использование может привести к ошибкам, которые тяжело отследить. В твоем случае есть 2 нормальных пути реализации: 1. Залинковать класс к клипу в библиотеке, как предложил Fernando Costa 2. Создавать экземпляр класса с помощью оператора new. Я просто не люблю первый вариант. Но все равно попробую в двух словах объяснить. Дело в том, что MovieClip и все потомки этого класса не могут быть созданы с помощью оператора new потому что должны обязательно быть привязаными к родителю, и привязку эту никак в последствии поменять нельзя (что, слава богу, было изменено в АС3). Т.е. чтобы создать новый клип - есть методы класса MovieClip - .attachMovie(), .createEmptyMovieClip(), .duplicateMovieClip() - все они требуют в агрументах указывать на родителя, либо родитель находится по умолчанию в определенном месте по отношению к клипу, чей метод был вызван. Первый вариант (линкование класса к клипу в библиотеке) используется для: создания компонентов (по-другому просто не возможно). Или если дизайнер принес уже готовый UI, и нужно его только оживить (и не вдаваться в подробности где что находится, какой клип послке какого создавать и т.п. Т.е. програмер вообще не занимается графикой - она вся уже существует, нужно только добавить функционала. Если проект небольшой, графики не много, и уклон на красивости оформления, а не на функционал - это вплоне хороший способ. Так примерно и создается 90% всего, что вообще делается на флеш. Второй вариант - предпочтительнее для проектов, где нужна сложная програмная графика. Эволюция %) class Buttonery extends MovieClip { private var nameclip:Number = 0; private var nmm:Number = ""; function Buttonery(pictype:String, px:Number, py:Number, sx:Number, sy:Number) { nameclip = _root.getNextHighestDepth(); nmm = "Buttonery_container"+nameclip; createEmptyMovieClip(nmm , nameclip); var picc:MovieClip = attachMovie(pictype , "picc", getNextHighestDepth()); picc._x=px; picc._y=py; picc._xscale=sx; picc._yscale=sy; trace(this); } } class Buttonery { private var nameclip:Number = 0; private var nmm:Number = ""; private var buttonery_mc:MovieClip; function Buttonery(pictype:String, px:Number, py:Number, sx:Number, sy:Number) { nameclip = _root.getNextHighestDepth(); nmm = "Buttonery_container"+nameclip; buttonery_mc = _root.createEmptyMovieClip(nmm , nameclip); buttonery_mc.attachMovie(pictype , "picc", buttonery_mc.getNextHighestDepth()); buttonery_mc.picc._x=px; buttonery_mc.picc._y=py; buttonery_mc.picc._xscale =sx; buttonery_mc.picc._yscale =sy; trace (buttonery_mc); } } Создаем "библиотеку" статических методов создающих клипы "на заказ" %)
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 21.12.2007 в 15:51. |
Часовой пояс GMT +4, время: 11:58. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|