Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   вставить картику как переменную (http://www.flasher.ru/forum/showthread.php?t=46288)

GreeNoise 30.06.2003 14:12

вставить картику как переменную
 
ЕСТЬ ФИЛЬМ , состоящий из нескольких сцен, все сцены построены по одному принципу, отличаются только используемыми картинками. Картинки на этих сценах одинакового размера и расположены на всех сценах в одном и том же месте.

Я ХОЧУ : весь фильм сократить до одной сцены, а символы вставлять скриптом как переменные.

НАПРИМЕР ТАК : все картинки у меня лежат в библиотеке как эталоны (symbol) и в нужный момент времени доставать их скрипитом, обращаясь по имени, и вставлять в нужное место.

ВОПРОС : Как мне указать куда именно надо вставлять картинку? И, если фильм у нас будет из одной сцены, как сделать, чтобы при следующем проходе (loop) вставлялась другая картинка?

Не слишком ли я намудрил?

Iv 30.06.2003 14:15

не слишком намудрил.
- нужно аттачить картинку из библиотеки.
сделай пустой клип на сцене, в него аттачь на нулевую глубину.

или еще проще:
все картинки сделай мувиками положи в одно место на сцене, и просто делай всем визибл 0
а после этого нужной - визибл 1
и все

GreeNoise 30.06.2003 14:26

Сэнкс!
Ok! Только я не совсем представляю как сделать, чтобы при следующем проходе (loop) вставлялась другая картинка?

Dimonius 30.06.2003 14:30

Создай переменную в первом кадре, с инкриментом во втором Все картинки пронумеруй, лупись со второго кадра.

GreeNoise 30.06.2003 15:10

Так. Хорошо, а если у меня должно быть несколько таких динамически-изменяемых объектов?

Например: imgLeft, imgCenter и imgRight

В библиотеке сложить их в разные папки и нумеровать их отдельно?

Dimonius 30.06.2003 17:00

Как ты их уложишь в библиотеке - это твое дело, главное, что бы они заканчивались нужным номером, тогда ты сможешь обращаться к ним как
"imgLeft"+var
"imgCenter"+var
"imgRight" +var
где var та переменная, задающая номер итерации.

GreeNoise 01.07.2003 18:16

чего-то нифига у меня не получается =(

мне надо :
у меня есть три набора мувиклипов, по четыре клипа в каждом наборе, все они названы imgLeft1, imgLeft2... imgRight1, imgRight2... imgCenter1, imgCenter2 ... и т.д.

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

могу я сделать так? :
в первый кадр самого верхнего слоя я пишу:

for (i=0; i<5; i++) {
"imgLeft"+i
"imgCenter"+i
"imgRight" +i
}

как я понимаю, после каждого прохода заначение i увеличивается на единицу, но как это сказать флешу, что он правильно меня понял?

Iv 01.07.2003 21:13

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

Sanik 01.07.2003 21:26

Исходник лучше выложи...

Iv 01.07.2003 21:37

зачем исходник?
посмотреть что у меня весь скрипт в руте в первом кадре?
и в библиотеке лежат два залинкованных мувика ball_mc и triangle_mc
Код:

// создаем XML описание (а можно и загрузить извне)
// по принципу: номер сцены указывается в ID узла сцены
// имя узла соответствует linkage имени мувика в библиотеке
str = "<scenes>";
str += "<scene id='1'>";
str += "<ball_mc _name='ball_mc' _x='20' _y='50' _alpha='50'/>";
str += "<triangle_mc _name='triangle_mc' _x='200' _y='100' _alpha='90'/>";
str += "<ball_mc _name='oval_mc' _x='20' _y='50' _xscale='50'/>";
str += "</scene>";
str += "<scene id='2'>";
str += "<ball_mc _name='ball_mc' _x='200' _y='150' _alpha='50'/>";
str += "<triangle_mc _name='triangle_mc' _x='20' _y='100' _alpha='90'/>";
str += "<ball_mc _name='oval_mc' _x='20' _y='50' _xscale='150'/>";
str += "</scene>";
str += "<scene id='3'>";
str += "<ball_mc _name='ball_mc' _x='20' _y='50' _alpha='50'/>";
str += "<triangle_mc _name='triangle_mc' _x='20' _y='100' _alpha='10'/>";
str += "<ball_mc _name='oval_mc' _x='20' _y='50' _xscale='30'/>";
str += "</scene>";
str += "</scenes>";
_root.scenes_xml = new XML(str);
// удаляем строку, она нам больше не нужна
delete str;
// создаем свойство scene в руте
_root.getScene = function() {
        return _root.scene;
};
_root.setScene = function(num) {
        var mc = _root.createEmptyMovieClip("holder_mc", 0);
        var nod_array = _root.scenes_xml[num].childNodes, i = 0;
        for (i; i<nod_array.length; i++) {
                mc.attachMovie(nod_array[i].nodeName, "", i, nod_array[i].attributes);
        }
};
_root.addProperty("scene", _root.getScene, _root.setScene);
// делаем тестовые аттачи
_root.onMouseUp = function() {
        _root.scene++;
};

и все. все очень просто.


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

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