![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Допустим, нарисовал я мувик кнопки и поместил в библиотеку.
Потом делаю функцию, которая аттачит в цикле этот мувик и получаю столбик с пятью кнопками. Параллельно в цикле пишу trace(mc._name); Получаю ряд названий. Все нормально. После исполнения цикла хочу обратится допустим к четвертой кнопке .. и получаю undefined. Как решить эту проблему? Возможно ли обратится к клипу и как это лучше сделать? ![]()
__________________
OMG... we have absolutely no life! (c) |
|
|||||
|
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
Так как клип аттачится на сцену то ес-но можнополучить доступ к нему, зависит всё от того как вы аттачите и как обращаетесь.
|
|
|||||
|
Регистрация: Apr 2004
Адрес: macromedia—adobe Любит: Flash MX
Сообщений: 2,860
|
обращаться через переменную, которая должна быть равна аттачиваему элементу
__________________
маска лошади и коня в россии и снг с бесплатной доставкой gimmethevape вейпы и поды доставка |
|
|||||
|
Создавать в том же цикле массив ссылок на клипы, или использовать имена для клипов типа "buttonN"+i
__________________
"We Are The Champions My Friends!" Queen |
|
|||||
|
Регистрация: Aug 2008
Адрес: 53 E
Сообщений: 60
|
Вот код:
import mx.transitions.Tween;
import mx.transitions.easing.*;
var count:Number = 3;
for (var i:Number=0; i<count; i++){
var temp1:MovieClip=this.createEmptyMovieClip("ablock"+i,i);
temp1.lineStyle(2,0xFFFFFF,100);
temp1.moveTo(20,20);
temp1.lineTo(60,20);
temp1.lineTo(60,60);
temp1.lineTo(20,60);
temp1.lineTo(20,20);
temp1._x=+80*i;
var temp2:MovieClip = temp1.createEmptyMovieClip("bblock"+i,i);
temp2.beginFill(0xFF0000,100);
temp2.moveTo(22,22);
temp2.lineTo(58,22);
temp2.lineTo(58,58);
temp2.lineTo(22,58);
temp2.lineTo(22,22);
temp2.endFill();
temp2._alpha=0;
temp2.onRollOver=function(){
var light:Tween= new Tween(temp2, "_alpha", Regular.easeIn, 0,50, 10, false);
}
}
Не могу собразить, как синтаксически правильно обратиться к имени динамически созданного MovieClip. Здесь: как я понимаю, я обращаюсь к временной переменной созданного мувиклипа, которая по окончании цикла примет значение "3", поэтому при наведении на любой из квадратов, заливка стартует в последнем. А как обратится к имени "мувика" в конкретной итерации цикла? Заранее, благодарю за дельные подсказки. |
|
|||||
|
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
в mcArray будут ссылки на созданные динамически объекты.
|
|
|||||
|
Регистрация: Aug 2008
Адрес: 53 E
Сообщений: 60
|
Obi, спасибо за ответ! Но не могли бы Вы расстолковать мне вот еще что:
Следуя Вашему методу, создаю массив: Далее идет цикл: for (var i:Number=0; i<count; i++){
var temp1:MovieClip=this.createEmptyMovieClip("ablock"+i,i);
temp1.lineStyle(2,0xFFFFFF,100);
temp1.moveTo(20,20);
temp1.lineTo(60,20);
temp1.lineTo(60,60);
temp1.lineTo(20,60);
temp1.lineTo(20,20);
temp1._x=+80*i;
var temp2:MovieClip = temp1.createEmptyMovieClip("bblock"+i,i);
temp2.beginFill(0xFF0000,100);
temp2.moveTo(22,22);
temp2.lineTo(58,22);
temp2.lineTo(58,58);
temp2.lineTo(22,58);
temp2.lineTo(22,22);
temp2.endFill();
temp2._alpha=0;
act.push(temp2);
//Методом push вставляем элементы в массив (в моем случае ссылки на Movie
//Clips), теперь act cодержит пути к мувиклипам:
//_level0.ablock0.bblock0,_level0.ablock1.bblock1,_level0.ablock2.bblock2
//Теперь, если вручную прописать:
_level0.ablock0.bblock0.onRollOver=function(){
var light:Tween= new Tween(_level0.ablock0.bblock0, "_alpha", Regular.easeIn, 0,50, 10, false);}
_level0.ablock1.bblock1.onRollOver=function(){
var light:Tween= new Tween(_level0.ablock1.bblock1, "_alpha", Regular.easeIn, 0,50, 10, false);}
_level0.ablock2.bblock2.onRollOver=function(){
var light:Tween= new Tween(_level0.ablock2.bblock2, "_alpha", Regular.easeIn, 0,50, 10, false);}
}
А как же всетаки циклично это сделать? Как извлечь путь из массива и вставить сюда: Возможно - это элементарно и просто, но, очень прошу помочь. |
|
|||||
|
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
Вообще, ни разу со встроенным твинером не работал, но предполагаю, что так должно работать:
|
|
|||||
|
Регистрация: Aug 2008
Адрес: 53 E
Сообщений: 60
|
Огромное спасибо, Obi! Все работает как НАДО! Полностью рабочий код ниже, можете проверить. )) Может и кому еще пригодится.
//1. Импортируем классы Tween и Easing
import mx.transitions.Tween;
import mx.transitions.easing.*;
//2. Создаем массив для хранения путей к динамически созданным Movie Clip'ам
var act:Array = new Array();
//3.Создаем переменную, которая, например хранит количество рядов, которое вернула БД MySQL при запросе.
var count:Number = 3;
//4.Запускаем серию циклов.
for (var i:Number=0; i<count; i++)// Создаем переменную i, устанавливаем ее
//значение равной нулю. Далее задаем условие выражения, которое у нас будет
//проверяться перед началом каждой итерации в цикле.
{
var temp1:MovieClip=this.createEmptyMovieClip("ablock"+i,i);//динамически
//создаем "мувик", который записываем во временную переменную temp1
temp1.lineStyle(2,0xFFFFFF,100);//параметры линии
temp1.moveTo(20,20);//начальное положение пера (х,у)
temp1.lineTo(60,20);// рисуем прямые
temp1.lineTo(60,60);
temp1.lineTo(20,60);
temp1.lineTo(20,20);
temp1._x=+80*i;//
var temp2:MovieClip = temp1.createEmptyMovieClip("bblock"+i,i);//динамически
//создаем "мувик", который записываем во временную переменную temp2
temp2.beginFill(0xFF0000,100);//создаем заливку красного цвета (цвет,
//прозрачность)
temp2.moveTo(22,22);
temp2.lineTo(58,22);
temp2.lineTo(58,58);
temp2.lineTo(22,58);
temp2.lineTo(22,22);
temp2.endFill();
temp2._alpha=0;
act.push(temp2);// push добавляет пути к Movie Clip'ам в конец массива.
act[i].onRollOver=function(){
var light:Tween= new Tween(this, "_alpha", Regular.easeIn, 0,50, 10, false);}
}
|
|
|||||
|
Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
|
Когда очень много кнопок, то можно использовать такой код:
--- button_index=5 // количество будущих кнопок
for(i=0;i< button_index;i++) //создаем цикл с индексом «i»
{ attachMovie("button","button_onPress"+i,i)//Создаем мувиклипы
//button_onPress" c индексом i
_root["button_onPress"+i]._x=100 // координаты по оси X
_root["button_onPress"+i]._y=50*i+100// координаты по оси Y
}
_root.onMouseDown = function() { // используем обработчик событий для левой кнопки
for(j=0;j< button_index;j++)// создаем цикл с индексом j, что бы пробежать по всем созданным мувиклипам
{
if(_root["button_onPress"+j].hitTest(_xmouse,_ymouse)) { //проверяем расположение курсора мышки при нажатии
trace("Hello World") //с помощью trace видем «Hello World»
trace("Кнопка номер "+j) //с помощью trace видем порядковый номер кнопки
}}}
немного модернизируем: добавим в начало кода: --- mas=new Array() //Создаем массив «mas»
mas=[«Петя»,10,01,«Bася»,«Hello»] // заполняем массив пятью текстовыми и цифровыми значениями
в обработчике кнопки добавим:
trace(«Содержание массива с индексом "+j+» = "+mas[j])
Теперь каждая кнопка по своему индексу будет обращаться к массиву «mas» Последний раз редактировалось NoCD; 23.08.2008 в 20:19. |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:35. |
|
|
« Предыдущая тема | Следующая тема » |
|
|