Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Подгружаем в анимацию картинки из внешнего источника (http://www.flasher.ru/forum/showthread.php?t=175080)

Andru1988 09.02.2012 10:36

Подгружаем в анимацию картинки из внешнего источника
 
Привет форумчане. Нужна ваша помощь.
Я тут новичок, да и во флеше работаю недавно. С ActionScript знаком плохо.
Пробема вот в чём:
мне нужно сделать такую анимацию: грубо говоря картинка, а на ней небольшие графические элементы. Когда челоек наводит мышкой на этот элемент появляется картинка в окне анимации, но картинка должна подгружаться из вне, из URL. Никак не пойму какой Экшн Скрипт нужен.
Буду очень благодарен за помощь.

mooncar 09.02.2012 11:11

Вложений: 1
Есть два варианта решения:
- подгрузить картинку заранее и показывать ее в неком контейнере при наведении
- подгружать картинку в контейнер файл при наведении, по отдельному запросу
Первый, как видно, лучше, поскольку нет времени на ожидание загрузки после наведения.

В обеих случаях нужно использовать методы и события класса MovieClipLoader, а в первом - еще и класс BitmapData.

Добавлено через 1 час 0 минут
Вариант в соседней теме пример выложил. Там сперва подгружается комплект картинок, а потом оперируется с их видимостью.
Только там не по наведению осуществялется показ, а путем перелистывания.
Для организации показа по наведению нужно использовать обработчик onRollOver на кнопке.

По первому варианту - пример во вложении. Возможно сложноват, конечно.

Andru1988 09.02.2012 12:13

Написал вот такой код:

Код AS1/AS2:

on (rollOver) {
loadGraphic("http://vashcoach.clan.su/_ph/15/2/90408174.jpg");
 
}

Но ничего не происходит. Понимаю что гдет накасячил но где не пойму, сижу на работе с самоучителем разбираюсь)
Как и говорил с Экшн скрипт дела не имел, так что если можно поподробне плиз.

Делаю на ЭкшнСкрипт 2.0 кстать.

mooncar 09.02.2012 12:15

1. Не забываем об оформлении кода тегами в сообщении!
2. Не пишем код на кнопках.
3. Что за loadGraphic такой? Используйте MovieClipLoader и его метод loadClip.

Andru1988 09.02.2012 12:17

ок.Спс.Ща буду сидеть мудрить)

mooncar 09.02.2012 12:17

Цитата:

Сообщение от Andru1988 (Сообщение 1061812)
Делаю на ЭкшнСкрипт 2.0 кстать.

Код на кнопках - это у вас не AS2, а AS1. Сразу перестаньте делать неправильно.

Пример загрузки в конце статьи о методе loadClip класса MCL.
Там контейнер создается на лету, а вы можете нарисовать на сцене заренее, задать имя container (имя не в библиотеке, а на сцене, Instance name) и убрать строку
Код AS1/AS2:

var container:MovieClip = createEmptyMovieClip("container", getNextHighestDepth());

из примера.

Andru1988 09.02.2012 14:34

Поковыряся и встроил вот такой код:

Код AS1/AS2:

prev_btn.onRollover = function() {
var container:MovieClip = createEmptyMovieClip("container", getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(this);
mcLoader.loadClip("YourImage.jpg",container);
 
};
 
function onLoadInit(mc:MovieClip) {
    trace("onLoadInit: " + mc);
}

Ничего не работает, оно и неудивительно,знаю что код касячный но не могу понять где касяк. При наведении мыши на кнопку prev_btn ничего не происходит,картинка в контейнере не загружается.
И другой вопрос, где должна быть картинка container? Когда преобразую в символ без разницы графика это или фрагмент ролика?

mooncar 09.02.2012 15:51

Здесь container - это не картинка, а контейнер-мувик для загрузки. Он может быть вообще пустым, обычно так и делают. В примере он вообще изначально отустствует, как я уже и говорил, создается на лету с помощью createEmptyMovieClip.

Можете нарисовать простой прямоугольник, превратить его в MovieClip (не Graphic, у этого символа нельзя задать имя экземпляра), в свойствах задать ему имя container и удалить содержание, я уже писал об этом.

Добавлено через 2 минуты
Для теста попробуйте так:
Код AS1/AS2:

var container:MovieClip = createEmptyMovieClip("container", getNextHighestDepth()); //либо имейте готовый на сцене
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(this);
 
prev_btn.onRollover = function() {
        mcLoader.loadClip("YourImage.jpg",container);
 
};
 
function onLoadInit(mc:MovieClip) {
    trace("загрузили!  " + mc);
}

То есть - не надо все пихать в обработчик onRollOver, отучайтесь. То что реально надо, оставляйте - то есть loadClip, старт загрузки.

Andru1988 10.02.2012 10:43

СПС))Щас пришёл на работу.Буду ковырять код)

Добавлено через 58 минут
Вродь основная часть получилась: навожу мышку - картинка подгружается, убираю - картинка исчезает.
Но я нарисовал контейнер в одном месте, а при наведении картинка появляется в другом.Тип контейнер в другом месте, но я его там не рисовал и его там нет....бред
Вот такой код юзаю:

Код AS1/AS2:

var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(this);
 
prev_btn.onRollOver = function() {
        mcLoader.loadClip("YourImage.jpg",container);
 
};
 
 
prev_btn.onRollOut = function() {
        mcLoader.loadClip("",container);
 
};
function onLoadInit(mc:MovieClip) {
    trace("загрузили!  " + mc);
}

Добавлено через 1 час 48 минут
Картинка не в контейнере появляется, а её верхний левый угол вствёт по центру "контейнера"

Добавлено через 1 час 50 минут
Да, и после наведении сам контейнер исчезает.....


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

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