Просмотр полной версии : Импорт картинок Swf'ом
Xarsok X
18.05.2003, 20:53
Есть SWF, картинки ,файл(txt) в котором путь к картинкам:
img/pic01.jpg
img/pic02.jpg
img/pic03.jpg
Вопрос: как вставлять в SWF файл картинки в определенном месте.
llllllllll
18.05.2003, 21:53
Оригинал написал(а) Xarsok X
Вопрос: как вставлять в SWF файл картинки в определенном месте.
? =)
Ctrl+R - Import to Library / и в нужном месте выкидывай в Timeline :D
ИМХО вопрос был следующий - "у меня есть гифы. как их можно динамически импортировать в флешку?"
типа того :D
ЗЫ: мне на этот вопрос тоже интересен ответ :)
на самом деле иногда проще самому найти отверт в хелпе, чем спрашивать. ответ на мой вопрос...
mc = new MovieClip();
mc.loadMovie("image.jpg")
:D
Nox Noctis
19.05.2003, 15:36
2korkiss
mc = new MovieClip();
mc.loadMovie("image.jpg"); ...я бы не стал :))
2Xarsok X
1. дожидаешься загрузки имен картинок из текстового файла
2. для каждой картинки делаешь следующее:
— создаешь клип, в который будешь грузить
— грузишь при помощи лоадмуви
— дожидаешься окончания загрузки
— выставляешь координаты
...а теперь: какой именно из шагов вызывает трудности ? :)
Делаю мувик mc, в нем еще мувик с именем mcpic
в мувике mc делаю mcpic.LoadMovie("1.jpg")
и ставлю mcpic.onData = function(){ trace("ttt");};
Ставил эту фразу и до и после лоадинга, но так и не добился чего хотел.
Короче подскажите как узнать, когда загрузилась картинка.
Спасибо!
причем если поставить mcpic.onRollOver() = function{ trace("Over");};
ТО! До лоадинга картинки все срабатывает, после лоадинга нет!!!!! 8-/ тоесть получается что нельзя заранее прицепить обработчик события к мувику по его идентификатору, его потом подгрузить и юзать обработчик...
Или я идиот - или лыжи прибили.
Помогите!
llllllllll
19.05.2003, 17:15
Интересно, если положить в коробку нечто, потом убрать коробку и на ее место поставить другую, ты тоже будешь искать в новой коробке это нечто и удивляться?
Оригинал написал(а) AlexSm
нельзя заранее прицепить обработчик события к мувику по его идентификатору, его потом подгрузить и юзать обработчик...
Или я идиот - или лыжи прибили.
Прибили. Несколько раз обсуждалось. Из внешнего мува онентерфрейм проверяй бутеслоадед и будет тебе, как грится, счастия. Не забудь бутестотал > 4.
Nox Noctis
19.05.2003, 17:27
Оригинал написал(а) AlexSm
До лоадинга картинки все срабатывает, после лоадинга нет
...
то есть получается что нельзя заранее прицепить обработчик события к мувику по его идентификатору, его потом подгрузить и юзать обработчик
вот эти две фразы как нельзя более точно отражают суть :)) (только без воскличательных и вопросительных знаков :) )
для функции таргет.лоадМуви(...) - таргет это мувиклип, содержимое которого будет ПОЛНОСТЬЮ заменено на то, что грузится... узнать что что-то полностью загрузилось можно при помощи веревочной петли и палки :))
(getBytesLoaded и getBytesTotal)
Оригинал написал(а) TTS
Не забудь бутестотал > 4. ...это если ручками пустой клип сделать - то 4... а если программно - то 0 :)
вот, держите пример :)
Оригинал написал(а) Nox Noctis
вот эти две фразы как нельзя более точно отражают суть :)) (только без воскличательных и вопросительных знаков :) )
для функции таргет.лоадМуви(...) - таргет это мувиклип, содержимое которого будет ПОЛНОСТЬЮ заменено на то, что грузится... узнать что что-то полностью загрузилось можно при помощи веревочной петли и палки :))
(getBytesLoaded и getBytesTotal)
...это если ручками пустой клип сделать - то 4... а если программно - то 0 :)
вот, держите пример :)
Спасибо!
Этот способ похож на 5ый флеш.
А как я заранее узнаю размер картинки в байтах????
И вообще это извращенство.
А в MX-е черным по белому в хелпе написан пример на onData,
где трейсернуться мувик должен после загрузки в myMovieClip некого image.jpg
Посмотрите сами!
Причем написано что onLoad какбы предназначен для определения что докачалось до нужного фрейма (тоесть типа как я понял в том фрейме где он стоит - там и отрабатывает), а типа onData предназначен для загрузки вариаблесов, ХМЛев и мувиков с картинками. в помощи так написано!!!!
Ну посмотрите сами.
Посмотрел приложенный пример.
Вопрос такой:
Я гружу произвольный jpg и мне надо узнать его размеры и навесть на мувик, в который загрузилась картинка onMouseOver
(заранее размеры картинки незнаю, в параметрах передавать не собираюсь)
Любой извращенческий способ спасет не отца не русской не демократии.
Nox Noctis
20.05.2003, 01:56
2AlexSm
сударь, вы меня не слушаете... :)
...а так же вы не слушаете драг ечей TTS, и llllllllll :)
первое:
событие онДата работает двумя разными способами:
1. если грузим переменные, то оно срабатывает ОДИН раз, когда все закканчивает грузиться...
2. если грузим .свф или .джпг - то оно срабатывает НЕСКОЛЬКО раз по ходу загрузки, когда приходит порция данных...
(см. хэлп - там это все написано :) )
второе:
функция getBytesTotal как раз и позволяет определить размер грузимой картинки в байтах. его не нужно знать заранее: сначала командуем загрузку, а потом уже спрашиваем какого размера грузимый файл...
в моем примере сделано то, что просил автор темы (если я его правильно понял :) ): сначала читаем фалик с именами картинок, а потом грузим их и расставляем по нужным координатам... ответ на твой вопрос в этом примере тоже есть :)
1. начинаем грузить (таргет.лоадМуви(такой-то.джпг))
2. создаем функцию онЕнтерФрейм, которая смотрит каков общий размер того, что мы грузим и того что уже загрузилось (getBytesTotal и getBytesLoaded соответственно)
3. когда загруженное количество байт становится равным общему - присваиваем клипу обработчик, после чего удаляем функцию онЕнтерФрейм за ненадобностью
так, что не понятно ? :)
Xarsok X
20.05.2003, 20:51
Оригинал написал(а) Nox Noctis
2korkiss
mc = new MovieClip();
mc.loadMovie("image.jpg"); ...я бы не стал :))
2Xarsok X
1. дожидаешься загрузки имен картинок из текстового файла
2. для каждой картинки делаешь следующее:
...а теперь: какой именно из шагов вызывает трудности ? :)
— создаешь клип, в который будешь грузить
— грузишь при помощи лоадмуви
— дожидаешься окончания загрузки
— выставляешь
как ? :confused:
А как узнать, что картинки такой нет ?
Тоесть я допустим думаю что она есть, а ее нет, или она битая, как узнать что все хреново ?
Nox Noctis
20.05.2003, 22:54
Оригинал написал(а) Xarsok X
как ? :confused: что "как" ?.. я же дал пример того как именно все это можно сделать...
хорошо - что именно не ясно из примера ? :))
2AlexSm
если файл не найден либо содержит что-то негрузимое флэшем - то target.getBytesTotal() вернет -1...
так что все просто - если размер файла меньше нуля - то прелоад можно сразу отключить...
Оригинал написал(а) Nox Noctis
если файл не найден либо содержит что-то негрузимое флэшем - то target.getBytesTotal() вернет -1...
так что все просто - если размер файла меньше нуля - то прелоад можно сразу отключить...Протестую!
По моим наблюдениям (сделанным в трезвом виде, хорошо выспавшись :) ) - getBytesTotal() претерпевает следующие метаморфозы: сразу после вызова mc.loadMovie() кажет размер исходного свиффа (того, в который грузим), затем (видимо, когда соединение с сервером установлено, но заголовок ответа ещё не пришёл) становится равным -1, а после прихода заголовка - уже выдаёт реальную цифру.
Nox Noctis
21.05.2003, 15:26
2Useless
хм. я тоже проверял...
мне ни разу не удалось добиться того, чтобы минус единица выскочила между размером того что было и того что грузится... :rolleyes:
в первый момент и правда скорее всего будет показан размер существующего таргета...
но в данном-то случае све грузится в .createEmptyMovieClip() - размер которого ноль, так что это ничего не меняет.
Xarsok X
28.05.2003, 20:53
что "как" ?.. я же дал пример того как именно все это можно сделать...
А как эти картинки затолкать в муви клип
(просто надо сделать прокрутку картинок)
Xarsok X
16.06.2003, 19:36
Ок все получилось, но как на эти картинки поставить ссылку
и сделать скроллинг
Nox Noctis
16.06.2003, 19:50
нууу, товарисч, вы предлагаете сделать все за вас ?.. :))
ссылку - просто:
делаешь функцию mc.onPress = function() { ... };
куда ставишь getURL или что там тебе нужно...
а скроллинг - вариантов туча. я бы грузил все это барахло внутри одного клипа, этот клип положил под маску, а потом его под маской двигал...
но скроллер я предлагаю тебе приладить самостоятельно, в исходниках примеров - туча...
ТОВАРИСЧИ!!!! Вот он, пример истинной взаимовыручки и альтруизма!!! Свершилось! Выражаю особую благодарность гражданам Инета Nox Noctis Useless TTS и llllllllll и выдаю им медаль в знак признания, за помощь ламерам и лично Nox Noctis за выдающееся терпение! Ура! :)) А то, обычно, посылаю в и на ..... поиск :)) рыли аппрешиэйтыд :)
Nox Noctis
17.06.2003, 13:44
карош глумиться :))
Xarsok X
27.06.2003, 18:57
ссылку - просто:
делаешь функцию mc.onPress = function() { ... };
куда ставишь getURL или что там тебе нужно...
mc.onPress = function() {
getURL(targets[i].param[3]);
};
Если в ini файле после координат прописан URL,
а вставлять куда? :confused:
Xarsok X
01.07.2003, 18:15
Вот мой код:
// данные из текстового файла
// в файде написано: имя_картинки,координата_Х,координата_Y
pictures = new XML();
pictures.onData = function(str) {
pictures = str.split("\r\n");
loadImages(pictures);
};
//pictures.load("http://kokstravel.ru/swf/plenka/infra/images.dat");
pictures.load("images.dat");
// загрузка картинок
loadImages = function (list) {
targets = [];
mc=[];
for (var i = 0; i<list.length; i++) {
mc[i] = this.createEmptyMovieClip("image"+i, 1+i);
j = i;
targets.push({loader:mc[i], param:list[i].split(",")});
mc[i].loadMovie(targets[i].param[0]);
}
// собственно прелоад
// загруженную картинку удаляем из списка грузящихся
j++;
this.onEnterFrame = function() {
for (i = 0; i<targets.length; i++) {
var mc = targets[i].loader;
urlpost = "javascript:ChangeImg(" + j + ")";
mc.onPress = function(){
getURL(urlpost);
};
// петля веревочная :)
var l = mc.getBytesLoaded();
var t = mc.getBytesTotal();
if (l && t && l>=t) {
mc._x = targets[i].param[1];
mc._y = targets[i].param[2];
}
}
if (!targets.length) {
delete this.onEnterFrame;
}
};
};
targets.splice(i, 1);
Исходник ~28Кб (http://kokstravel.ru/xarsok/sou.rar)
Nox Noctis
01.07.2003, 18:25
вот так правильно:
this.onEnterFrame = function() {
for (var i = 0, j = 0; i<targets.length; i++, j++) {
var mc = targets[i].loader;
mc.urlpost = "java script:ChangeImg("+j+")";
mc.onPress = function() {
getURL(this.urlpost);
};
var l = mc.getBytesLoaded();
var t = mc.getBytesTotal();
if (l && t && l>=t) {
mc._x = targets[i].param[1];
mc._y = targets[i].param[2];
}
}
if (!targets.length) {
delete this.onEnterFrame;
}
};
замени.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.