Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   переменная в названии объекта (http://www.flasher.ru/forum/showthread.php?t=112539)

dimas007 31.05.2008 00:34

переменная в названии объекта
 
хочу в цикле создавать и оперерировать с обьектами

logo_mc_0
logo_mc_1
logo_mc_2
и тд

(???)
_root.createEmptyMovieClip("logo_mc_"(???), this.getNextHighestDepth());
logo_mc_(???)._x = my_x;

Роман Вадимович 31.05.2008 00:43

Код:

for(i=0; i<10; i++)
{
  _root.createEmptyMovieClip("logo_mc_" + i, this.getNextHighestDepth());
  _root["logo_mc_" + i]._x = my_x;
}


iNils 31.05.2008 01:23

Роман Вадимович конечно прав, но это не эффективный способ.
Метод createEmptyMovieClip возращает ссылку на создаваемый клип, вот ею и надо пользоваться.
Код:

for (var i:Number = 0; i < 10; i++) {
        var mc:MovieClip = this.createEmptyMovieClip ("logo_mc_" + i, this.getNextHighestDepth ());
        mc._x = my_x;
}

И еще один момент. Если писать сначала _root.createEmptyMovieClip, а потом this.getNextHighestDepth, то проблемы вам обеспечены.

Роман Вадимович 31.05.2008 02:00

iNils, полностью с Вами согласен. Я просто заменил знаки вопросов в первом посте автора, полагая, что такой подход для него наиболее понятен.

dimas007 01.06.2008 01:49

Часть 2 "переменная в названии переменной"

по аналогии хочу насоздавать в цикле переменные var_0, var_1, var_2 и тд , и потом же их использовать подставляя i

KoLar 01.06.2008 02:30

dimas007, Вы уверены, что Вам нужны эти переменные? Человечество придумало для таких целей массивы. Гароздо удобнее :)

dimas007 01.06.2008 03:02

Цитата:

Сообщение от KoLar (Сообщение 742970)
dimas007, Вы уверены, что Вам нужны эти переменные? Человечество придумало для таких целей массивы. Гароздо удобнее :)

просто столкнулся с такой проблемой :
пишу видео-плеер с плей-листом, который загружает xml из которой берёт информацию о видео-роликах. на основании этого создаёт трек-лист и к каждому ролику делает кнопку.

Код:

_root.playlist.createEmptyMovieClip("preview_" + i, _root.playlist.getNextHighestDepth());
_root.playlist["preview_" + i].createEmptyMovieClip("container",0);
_root.playlist["preview_" + i]._x = 20;
_root.playlist["preview_" + i]._y = koordinat_y;
_root.playlist["preview_" + i].container.loadMovie(Arr[i]['preview']);

// это вывели в плей-листе превьюшку к клипу
// а теперь хотим чтобы при клике на превьюшке начал рпоигрываться этот клип :

_root.playlist["preview_" + i].onPress = function() {
my_ns.play(Arr[i]['location']);
};

и не работает метод play()

alexcon314 01.06.2008 03:18

Исходник? Так трудно сказать определенно. Но раз вы используете loadMovie, то вы не застрахованы от часто встречающейся ошибки, когда назначают обработчик клипу до окончания его загрузки, забывая, что загрузка данных идет асинхронно с выполнением кода.

KoLar 01.06.2008 04:14

Цитата:

Сообщение от dimas007 (Сообщение 742972)
Код:

_root.playlist["preview_" + i].onPress = function() {
my_ns.play(Arr[i]['location']);
};


ага, и ещё забывают, что когда будет вызываться событие onPress, то переменной i уже существовать не будет. Или она будет иметь не то значение, которое хотелось бы. Поэтому надо делать так:
Код:

_root.playlist["preview_" + i].i = i;
_root.playlist["preview_" + i].onPress = function() {
my_ns.play(Arr[this.i]['location']);
};

P.S. dimas007, скоро придёт iNils и будет ругаться, что неправильно оформляешь код. :) Используй тег CODE.

iNils 01.06.2008 04:30

Вместо всех этих километров кода, надо писать так
Код:

_root.playlist.createEmptyMovieClip("preview_" + i, _root.playlist.getNextHighestDepth());
var mc:MovieClip  = _root.playlist["preview_" + i].createEmptyMovieClip("container",0);
mc._x = 20;
mc._y = koordinat_y;
mc.container.loadMovie(Arr[i]['preview']);
...

И использование [code][/code] обязательно.


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

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