Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Импорт картинок Swf'ом (http://www.flasher.ru/forum/showthread.php?t=45092)

Xarsok X 18.05.2003 20:53

Импорт картинок Swf'ом
 
Есть SWF, картинки ,файл(txt) в котором путь к картинкам:
img/pic01.jpg
img/pic02.jpg
img/pic03.jpg
Вопрос: как вставлять в SWF файл картинки в определенном месте.

llllllllll 18.05.2003 21:53

Re: Импорт картинок Swf'ом
 
Цитата:

Оригинал написал(а) Xarsok X
Вопрос: как вставлять в SWF файл картинки в определенном месте.
? =)

RU$LAN 19.05.2003 13:00

Ctrl+R - Import to Library / и в нужном месте выкидывай в Timeline :D

korkiss 19.05.2003 13:41

ИМХО вопрос был следующий - "у меня есть гифы. как их можно динамически импортировать в флешку?"
типа того :D

ЗЫ: мне на этот вопрос тоже интересен ответ :)

korkiss 19.05.2003 14:14

на самом деле иногда проще самому найти отверт в хелпе, чем спрашивать. ответ на мой вопрос...

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. для каждой картинки делаешь следующее:
— создаешь клип, в который будешь грузить
— грузишь при помощи лоадмуви
— дожидаешься окончания загрузки
— выставляешь координаты

...а теперь: какой именно из шагов вызывает трудности ? :)

AlexSm 19.05.2003 17:10

Ээ.. пардон тему не я начал... но...
 
Делаю мувик mc, в нем еще мувик с именем mcpic
в мувике mc делаю mcpic.LoadMovie("1.jpg")
и ставлю mcpic.onData = function(){ trace("ttt");};

Ставил эту фразу и до и после лоадинга, но так и не добился чего хотел.

Короче подскажите как узнать, когда загрузилась картинка.
Спасибо!

причем если поставить mcpic.onRollOver() = function{ trace("Over");};

ТО! До лоадинга картинки все срабатывает, после лоадинга нет!!!!! 8-/ тоесть получается что нельзя заранее прицепить обработчик события к мувику по его идентификатору, его потом подгрузить и юзать обработчик...

Или я идиот - или лыжи прибили.
Помогите!

llllllllll 19.05.2003 17:15

Интересно, если положить в коробку нечто, потом убрать коробку и на ее место поставить другую, ты тоже будешь искать в новой коробке это нечто и удивляться?

TTS 19.05.2003 17:25

Re: Ээ.. пардон тему не я начал... но...
 
Цитата:

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

Или я идиот - или лыжи прибили.

Прибили. Несколько раз обсуждалось. Из внешнего мува онентерфрейм проверяй бутеслоадед и будет тебе, как грится, счастия. Не забудь бутестотал > 4.

Nox Noctis 19.05.2003 17:27

Re: Ээ.. пардон тему не я начал... но...
 
Вложений: 1
Цитата:

Оригинал написал(а) AlexSm
До лоадинга картинки все срабатывает, после лоадинга нет
...
то есть получается что нельзя заранее прицепить обработчик события к мувику по его идентификатору, его потом подгрузить и юзать обработчик

вот эти две фразы как нельзя более точно отражают суть :)) (только без воскличательных и вопросительных знаков :) )

для функции таргет.лоадМуви(...) - таргет это мувиклип, содержимое которого будет ПОЛНОСТЬЮ заменено на то, что грузится... узнать что что-то полностью загрузилось можно при помощи веревочной петли и палки :))
(getBytesLoaded и getBytesTotal)

Цитата:

Оригинал написал(а) TTS
Не забудь бутестотал > 4.
...это если ручками пустой клип сделать - то 4... а если программно - то 0 :)

вот, держите пример :)

AlexSm 19.05.2003 21:08

Re: Re: Ээ.. пардон тему не я начал... но...
 
Цитата:

Оригинал написал(а) Nox Noctis
вот эти две фразы как нельзя более точно отражают суть :)) (только без воскличательных и вопросительных знаков :) )

для функции таргет.лоадМуви(...) - таргет это мувиклип, содержимое которого будет ПОЛНОСТЬЮ заменено на то, что грузится... узнать что что-то полностью загрузилось можно при помощи веревочной петли и палки :))
(getBytesLoaded и getBytesTotal)

...это если ручками пустой клип сделать - то 4... а если программно - то 0 :)

вот, держите пример :)


Спасибо!
Этот способ похож на 5ый флеш.
А как я заранее узнаю размер картинки в байтах????
И вообще это извращенство.

А в MX-е черным по белому в хелпе написан пример на onData,
где трейсернуться мувик должен после загрузки в myMovieClip некого image.jpg

Посмотрите сами!

Причем написано что onLoad какбы предназначен для определения что докачалось до нужного фрейма (тоесть типа как я понял в том фрейме где он стоит - там и отрабатывает), а типа onData предназначен для загрузки вариаблесов, ХМЛев и мувиков с картинками. в помощи так написано!!!!
Ну посмотрите сами.

AlexSm 19.05.2003 22:29

Извращения.....
 
Посмотрел приложенный пример.

Вопрос такой:
Я гружу произвольный jpg и мне надо узнать его размеры и навесть на мувик, в который загрузилась картинка onMouseOver

(заранее размеры картинки незнаю, в параметрах передавать не собираюсь)

Любой извращенческий способ спасет не отца не русской не демократии.

Nox Noctis 20.05.2003 01:56

Re: Re: Re: Ээ.. пардон тему не я начал... но...
 
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:

AlexSm 20.05.2003 21:43

Да, хреново дело.
 
А как узнать, что картинки такой нет ?
Тоесть я допустим думаю что она есть, а ее нет, или она битая, как узнать что все хреново ?

Nox Noctis 20.05.2003 22:54

Цитата:

Оригинал написал(а) Xarsok X
как ? :confused:
что "как" ?.. я же дал пример того как именно все это можно сделать...
хорошо - что именно не ясно из примера ? :))

2AlexSm
если файл не найден либо содержит что-то негрузимое флэшем - то target.getBytesTotal() вернет -1...
так что все просто - если размер файла меньше нуля - то прелоад можно сразу отключить...

Useless 21.05.2003 14:53

Цитата:

Оригинал написал(а) 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 или что там тебе нужно...

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

но скроллер я предлагаю тебе приладить самостоятельно, в исходниках примеров - туча...

Vrefr 17.06.2003 12:21

ТОВАРИСЧИ!!!! Вот он, пример истинной взаимовыручки и альтруизма!!! Свершилось! Выражаю особую благодарность гражданам Инета 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Кб

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;
                }
        };

замени.


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

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