Как прилепить getURL к динамически создаваемому MC? @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 18 ] 
*   Список форумов / Технологии изображения / Flash » ответить » создать топик « | »
Автор Сообщение
Leming Муж.
участник
0
Сообщения: 1212
Зарегистрирован: 12.06.03
Заголовок сообщения: Как прилепить getURL к динамически создаваемому MC?
Сообщение Добавлено: 5 Июнь 2005, 12:48:57 
Приветствую!
Сабж, собственно.
Суть проблемы:
Из текстового файла читаются путь к растру, описание к нему и URL.
Растры прочитал и вывел в отдельные MC, пользуя loadMovie().
Как мне теперь залинковать эти MC на httpшные урлы?

Я пробовал загнать в контейнер и обработать по onRelease - не получилось.

Может чего в коде напорол... Привожу его ниже в кач-ве референса.
Заранее благодарствую за помощь!
--------------
pArray=this.images.split("|");
for (i=0;i<pArray.length;i=i+3)
{

container=_root.createEmptyMovieClip(name,i);
loadMovie(pArray[i],name);
container._x=i*spacing;
container.onRelease = function()
{
getURL(pArray[i+2],"_blank");

}

name++;
trace(pArray[i+1]);


}
--------------

_________________
★ I Deal Design ★
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 5 Июнь 2005, 13:39:10 
мдя … корявее кода я не видел.

что есть name ? он у тебя числовой? если да то это зря. для инстэнс нэйм лучше юзать что-то типа: "MAMA"+name; тоесть текстовые значения.

порадовала эта строчка : trace(pArray[i+1]);
ты специально хранишь в массиве чего-то непонятное что бы оттрэйсить?

loadMovie(pArray[i],name); - это что и куда???

првельнее так: container.loadMovie(pArray[i]);

А вообще должно работать … хоть и криво.

Проверь, если вообще жмёться. Если нет то просто ты нам на всё показал.
container.onRelease = function()
{
trace(pArray[i+2]);
}
Leming Муж.
участник
0
Сообщения: 1212
Зарегистрирован: 12.06.03
Сообщение Добавлено: 5 Июнь 2005, 14:45:25 
Не претендую на асса в AS :)
порадовала эта строчка : trace(pArray[i+1]);
осталась от первоначального трейсинга, просто забыл грохнуть :)
loadMovie(pArray[i],name); - это что и куда???
pArray[i] - файл с растром, name - динамический MC.
Конкретно с этим проблем нет. Растр выводится корректно. Теперь его залинковать надо...

Проверь, если вообще жмёться. Если нет то просто ты нам на всё показал.
container.onRelease = function()
{
trace(pArray[i+2]);
}


Не-а не жмется :( Курсор не меняется. Трейс ничего не возвращает.

_________________
★ I Deal Design ★
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 5 Июнь 2005, 15:07:10 
Я не сказал, что это не работает :) я заказал что это работает очень криво :)

Хочу признаться. Я тока что написал этот код и у меня всё заработало :), я конечно ввёл свою коректировку. Которую описал в верхнем посте.
Leming Муж.
участник
0
Сообщения: 1212
Зарегистрирован: 12.06.03
Сообщение Добавлено: 5 Июнь 2005, 20:13:22 
Ну так а как сделать чтоб MC стал обрабатывать нажатие? :)

_________________
★ I Deal Design ★
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 5 Июнь 2005, 23:16:29 
для начала решим, что у тебя AS2.0.
потом предположим, что ты создаёшь объекты (mc) и пытаешся навесить на них собыитя с собственными переменными.
из этого всего станет понято следующее -

твой container должен поиметь переменную с которой работаем по нажатию на оный
тобишь:
container._url=pArray[i+2]
container.onPress=function(){getURL(this._url,'_blank')

вот вприницпе такая теория :laugh:

p.s.
иначе ты вешаешь на onPress переменную pArray[i+2]. а чему она у тебя равна? ну конечно же pArray[(конечное значение i)+2]. И так для всех клипов. это же очевидно.

_________________
можно на ТЫ.
Leming Муж.
участник
0
Сообщения: 1212
Зарегистрирован: 12.06.03
Сообщение Добавлено: 6 Июнь 2005, 00:07:14 
Не фурычит :(
Прилагаю весь код, может где в другом месте трабл?

var images = new LoadVars();
var pArray = new Array();
var i=0;
var name = 0;
layer=2;
spacing=70;
images.onLoad = function()
{
pArray=this.images.split("|");
for (i=0;i<pArray.length;i=i+3)
{

container=_root.createEmptyMovieClip("img"+name,i);
container.loadMovie(pArray[i],"img"+name);
container._x=i*spacing;
container._url=pArray[i+2];

container.onRelease=function()

{
getURL(container._url,"_blank")
trace(pArray[i+2]);
}


name++;



}

}
images.load("_web.txt");

_________________
★ I Deal Design ★
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 6 Июнь 2005, 13:33:34 
bE(o0L, ну начнём с того что ты наговрил непонятно что. Прочитай про видимость переменных во флэше. pArray прекрастно виден для onRelease.

Leming, уверен, что у тя грузится массив? Просто я написал это бяку с заданным масивом и всё заработало.

Быстрым взглядом можно заметить следущее:

var images = new LoadVars();
pArray=this.images.split("|");

Я представляю себе этак:

text: array=asdasdasdas|asdasda|asdasda|asdasda|asdasd и т.д.

Соответсвенно если ты делаешь LoadVars, то получишь this.images.array = "asdasdasdas|asdasda|asdasda|asdasda|asdasd";
Значит делаем так: pArray=this.images.array.split("|");

Думаю что понятно.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 7 Июнь 2005, 00:49:24 
BlooDHounD, c твоей стороны наивно полагать будто бы мне следует читать о видимости переменных во флеше ;) так же наивно полагать будто бы элемент pArray находящийся в руте (или где) станет некоей переменной в абсолютно другом клипе с ключом который раз надцать поменяли в цикле.

Leming, твой код это полный абздец. для начала нужно правельно составить данные для loadVars. это как вариант. сразу масса проблем отпадёт (например шаги i+=3 и прочая лишняя арифметика)

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

Код:
obj=createEmptyMovieClip("img"+name,name);
obj.createEmptyMovieClip('src',1) // <- eto tvoj source clip
obj.src.loadMovie(pArray[i])
obj._url=pArray[i+2];
obj.onRelease=function(){
getURL(this._url,"_blank")
trace(this._url)
}


это всё замени в своём цикле. (заместо obj естественно пишешь свой длинный container)

_________________
можно на ТЫ.
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 7 Июнь 2005, 08:34:42 
оффтопик:
bE(o0L, ок. Путь к гениальности лежит через обсурд. Еслиб почитал бы то прекрасно значл бы, что он увидет эту переменную. Кстати проэесперементировать это очень просто. Займись вечерком.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 7 Июнь 2005, 11:59:40 
оффтопик:
BlooDHounD, может покажешь свой эксперемент? :)

_________________
можно на ТЫ.
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 7 Июнь 2005, 12:45:10 
оффтопик:
var a:String = "b";
var mc:MovieClip = this.createEmptyMovieClip("bu", 0);
mc.onEnterFrame = function():Void
{
trace(a);
}
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 8 Июнь 2005, 01:49:28 
оффтопик:
эта отмазка не канает, ты утверждал что onClipEvent=function(){trace(someArray[someKey])} будет работать ;)
а не то что объявленную переменную оттрейсим в clipEvent`e ;)

_________________
можно на ТЫ.
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 8 Июнь 2005, 10:00:09 
оффтопик:
Ты кажет ничё не понимаешь о чём идёт речь. Я утвеждал, что исправил человека не по месту. У него массв так объявлен. И не нужно создавать лишьнию переменную. Ты внёс своё веское "я" там, где оно совершенно не будет работать. Чё ты написал щас я не понимаю … На пример с массивом:
var i:Number = 0;
var arr:Array = new Array(1, 9, 2, 3, 4, 6);
var mc:MovieClip = this.createEmptyMovieClip("bu", 0);
mc.onEnterFrame = function():Void
{
if (i<arr.length) trace(arr[i]);
else delete this.onEnterFrame;
i++;
}

или ты не понимаешь что хочешь мне доказать или ты просто не знаешь самого примитивного во флэше.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 8 Июнь 2005, 13:35:21 
оффтопик:
если ты не понимаешь то что я написал, это характеризует тебя не с лучшей стороны.
вот твой код (в цикле):
container.onRelease = function() {trace(pArray[i+2]);} // второй пост
коий является полным бредом. Я показываю правельное решение. (кстати парень походу давно справился)
твои потуги списать всё на адресацию переменных либо на мои знания просто смешны.
Кстати твой последний пример либо по глупости либо умышленно так же вовсе не соответствует твоим словам. дабы больше не утруждать тебя и не лицезреть бредовый скриптинг, я тебе поясню чего ты утверждаешь:
for(n=0;n<10;n++){obj=createEmptyMovieClip('mc'+n,n);obj.onPress=function(){trace(n)}}
после того как ты внимательно прочтёшь все посты ещё раз, попробуй продолжит разговор - если конечно сможешь :)
p.s.
надеюсь больше ты не станешь писать всякие "правельные" бредни типа var a:String='aaa';mc.onPress=function():Void{trace(a)}, а так же загонять циклы в enterFrame дабы завуалировать свой промах.

_________________
можно на ТЫ.
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 8 Июнь 2005, 15:58:00 
bE(o0L, кароче. Я понимаю одно. Тот пример, который является бредом работает обсоютно всегда. Ты говорил, что это не работает, я тебе доказал, что это работает. Мне ничё больше не надо. По поваду глупочти, я поспорю. А всё соответсвует. Как я вижу, что ты просто не хочешь утвердить свою неправоту, и начинаешь всё сваливать на то что я брежу. Твои "правельные решения" ничем не лучше моих "правельных", так как это относительное понятие.

Дискусия окончена.
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 8 Июнь 2005, 15:58:46 
Если тебя устроит, то я признаю свои неправоту.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 8 Июнь 2005, 22:52:17 
BlooDHounD, старик, дело в том что тот пример который ты показал и тот пример который у нашего бедняги вопрошающего абсолютно разные.
А правоту, если хочешь, можешь оставить себе :)

_________________
можно на ТЫ.
*   Список форумов / Технологии изображения / Flash « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 18 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100