Просмотр полной версии : вставить картику как переменную
GreeNoise
30.06.2003, 14:12
ЕСТЬ ФИЛЬМ , состоящий из нескольких сцен, все сцены построены по одному принципу, отличаются только используемыми картинками. Картинки на этих сценах одинакового размера и расположены на всех сценах в одном и том же месте.
Я ХОЧУ : весь фильм сократить до одной сцены, а символы вставлять скриптом как переменные.
НАПРИМЕР ТАК : все картинки у меня лежат в библиотеке как эталоны (symbol) и в нужный момент времени доставать их скрипитом, обращаясь по имени, и вставлять в нужное место.
ВОПРОС : Как мне указать куда именно надо вставлять картинку? И, если фильм у нас будет из одной сцены, как сделать, чтобы при следующем проходе (loop) вставлялась другая картинка?
Не слишком ли я намудрил?
не слишком намудрил.
- нужно аттачить картинку из библиотеки.
сделай пустой клип на сцене, в него аттачь на нулевую глубину.
или еще проще:
все картинки сделай мувиками положи в одно место на сцене, и просто делай всем визибл 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 увеличивается на единицу, но как это сказать флешу, что он правильно меня понял?
я бы рекомендовал поступить иначе:
сделай три массива, а еще лучше xml-описание сцены и перезоди по xml, считывая их него данные о требуемых мувиках и их настройках.
ща пример сделаю и пришлю.
зачем исходник?
посмотреть что у меня весь скрипт в руте в первом кадре?
и в библиотеке лежат два залинкованных мувика 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++;
};
и все. все очень просто.
Оригинал написал(а) BitSky
зачем исходник?
Да я не тебе, я GreeNoise'у! Шоб глянуть чего хотит... :)
GreeNoise
02.07.2003, 12:39
САБЖ всем, кто помог!
Мне тут продложили вот такое решение: http://www.april5.de/gosha/bred.html (http://www.april5.de/gosha/bred.html)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.