Форум 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=93551)

Dimanoss 23.03.2007 18:37

Динамическая смена импортированной графики
 
Пытаюсь малой кровью решить такую задачку:

Как оно должно выглядеть:
Галерея картинок (количество непостоянно), которые появляются снизу, плывут наверх и изчезают. (слева направо тоже можно) При наведении курсора на область с роликом движение прекращается, при клике на картинке открывается некоторый URL. Всё!

Как мне это видется технически:
Посредством PHP из базы MySQL вытаскиваются имена файлов и URLы (ID), где-то, видимо, складируются, и в виде переменных передаются в ролик. Там они через рандомайзер динамично подгружаются (плюс сами картинки) на определённые места... ммм как бы точнее.... скажем, картинок у меня десятка три, но на экране отображаются 8-9. Значит, если я правильно понимаю, плодить нужно не тридцать слоёв, а просто регулярно заменять "отработанные" картинки на новые.

В чём проблема:
PHP, MySQL и HTML для меня - куст родной. С XML-ем тоже смогу поладить. А вот Flash'ем занимался последний раз лет 5-6 назад, опыт ущербно-зачаточный. Т.е. если со скриптом хоть кое-как и смогу разобраться, то с самим принципом построения - исключительная задница.

О чём прошу всех гуру:
Если есть подобный проектик на примете, да ещё чтоб можно было в исходнички заглянуть, дайте знать, а? Или стандарное какое-то решение. Если же ничего такого нет, подтолкните к правильному решению, алгоритмиком каким попотчуйте... От какой печки вообще плясать?

Север 23.03.2007 18:48

Вложений: 1
poni-nelegal.narod.ru
это для примера фотогалереи. (изначально грузится XML откуда все собссно и берется)

384-673-669 - стучись, всё объясню

Данный пример в приложении

Хотя пример плохой наверное. попробуй так:
в любом случае картинки будут иметь примерно такие имена
от pic1 до pic(итой)
кроме того можно использовать ссылки на клипы
Вот такой код к примеру
Код:


stop();
import flash.display.BitmapData;
var Count:Number=7;


for (var i:Number=1;i<=Count;i++) {
        var t:MovieClip=this.createEmptyMovieClip("pic"+i, this.getNextHighestDepth()); // создаем указатель на созданный клип
            var myBitmapData:BitmapData = new BitmapData(20, 20, false, 0xFF0000);
        t.attachBitmap(myBitmapData, this.getNextHighestDepth());
        t.text.text=i;// условно загружаем картинку
        t._x = 20;
        t._y = i*50;
       
        t.onEnterFrame=function(){
                this._y+=1;
                if (this._y>364){
                        this._y=20;
                }
        }
       
        t.onRollOver = function() {
                // глобальная остановка
                for (var i:Number=1;i<=Count;i++) {
                        _root["pic"+i].onEnterFrame=function() {};
                }
                // какое то событие 1
                trace("Остановка картинок, мышка наведена на "+this+" картинку" );
        }
       
        t.onRollOut = function() {
                // глобальная "поехали"
                for (var i:Number=1;i<=Count;i++) {
                        _root["pic"+i].onEnterFrame=function() {
                                this._y+=1;
                                if (this._y>364){
                                        this._y=20;
                                }
                        }
                }
                // какое то событие 2
                trace("Картинки поехали, мышка убрана с "+this+" картинки" );
        }

        t.onPress=function(){
                // какое то событие 3
                trace("Загрузка картинки, мышка нажата на "+this+" картинку" );
        }
       
}

Вместо простого цикла for используй обход XML дерева, а вместо
Код:

            var myBitmapData:BitmapData = new BitmapData(20, 20, false, 0xFF0000);
        t.attachBitmap(myBitmapData, this.getNextHighestDepth());

Используй внтурисозданный клип + загрузка в него картинки c урла полученного из XML дерева

Dimanoss 23.03.2007 20:15

пример, кстати, отдалённо напоминает то, что нужно. Спасибо.

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

Север 23.03.2007 20:20

Вы не поняли.
Имена клипов, в которые загружены ваши картинки, как раз будут структурированны, так как будут создаваться динамически в циклическом обходе вами созданного XML дерева.

Просмотрите у себя еще раз вот этот пример (просто кинть код на первом кадре
Код:

stop();
import flash.display.BitmapData;
var Count:Number=7;


for (var i:Number=1;i<=Count;i++) {
        var t:MovieClip=this.createEmptyMovieClip("pic"+i, this.getNextHighestDepth()); // создаем указатель на созданный клип
            var myBitmapData:BitmapData = new BitmapData(20, 20, false, 0xFF0000);
        t.attachBitmap(myBitmapData, this.getNextHighestDepth());
        t.text.text=i;// условно загружаем картинку
        t._x = 20;
        t._y = i*50;
       
        t.onEnterFrame=function(){
                this._y+=1;
                if (this._y>364){
                        this._y=20;
                }
        }
       
        t.onRollOver = function() {
                // глобальная остановка
                for (var i:Number=1;i<=Count;i++) {
                        _root["pic"+i].onEnterFrame=function() {};
                }
                // какое то событие 1
                trace("Остановка картинок, мышка наведена на "+this+" картинку" );
        }
       
        t.onRollOut = function() {
                // глобальная "поехали"
                for (var i:Number=1;i<=Count;i++) {
                        _root["pic"+i].onEnterFrame=function() {
                                this._y+=1;
                                if (this._y>364){
                                        this._y=20;
                                }
                        }
                }
                // какое то событие 2
                trace("Картинки поехали, мышка убрана с "+this+" картинки" );
        }

        t.onPress=function(){
                // какое то событие 3
                trace("Загрузка картинки, мышка нажата на "+this+" картинку" );
        }
       
}

Вместо простого цикла for используй обход XML дерева, а вместо

Код:

            var myBitmapData:BitmapData = new BitmapData(20, 20, false, 0xFF0000);
        t.attachBitmap(myBitmapData, this.getNextHighestDepth());

Используй внтурисозданный клип + загрузка в него картинки c урла полученного из XML дерева


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

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