Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Предзагрузка папки с картинками (http://www.flasher.ru/forum/showthread.php?t=206789)

cvasy 03.03.2014 13:42

Предзагрузка папки с картинками
 
Задача сделать панорамное смещение(слайдшоу такое) картинок, сменяющих друг друга.
Помогите с кодом

Koopa 03.03.2014 21:34

Код AS3:

package  {
        public class Main extends MovieClip{       
                public function Main():void{
                }
 
        }       
}


cvasy 04.03.2014 11:31

А по подробнее?!

Wolsh 04.03.2014 12:10

cvasy, если хотите получать ответы на этом форуме, научитесь задавать вопросы. У Вас даже название темы непонятно как связано с вопросом, а вопрос ниочем, с таким же успехом можно было просто написать "Помогите!".
Опишите проблему, покажите что Вы пытались сделать и что из этого получилось/что не получилось.

FlasherEgor 04.03.2014 15:18

Можно написать свой класс - BitmapMovieClip, допустим; наследовать его от Bitmap, но внутри хранить несколько BitmapData в массиве. А свойство bitmapData переписать, чтобы оно возвращало только текущую BitmapData(зачем, оно и так будет её возвращать). Ну и метод добавить, который будет эти BitmapData переключать... И отдельный класс эффектов, например, для плавного перехода.

Добавлено через 4 минуты
От Bitmap потому, что тут же, наверное, про растровые изображения вопрос...

cvasy 05.03.2014 16:52

Wolsh Да, упрек принят. Действительно задавать нормально вопрос не умею - я новичек
по коду у меня вот что сейчас:
Код AS3:

import flash.events.Event;
 
var skorost=2;
 
var new_img:img_0001=new img_0001;
new_img.y = stage.stageHeight/2;
addChild(new_img);
new_img.x = new_img.stage.width/2;
 
new_img.addEventListener(Event.ENTER_FRAME,fonedet);
function fonedet(e:Event)
{
        if ( new_img.x >= -2300) { e.target.x-=skorost; }
        else {
                new_img.removeEventListener(Event.ENTER_FRAME,fonedet);
                removeChild(new_img);
                trace ("Есть один!");
 
                var new_img2:img_0002=new img_0002;
                new_img2.y = stage.stageHeight/2;
                addChild(new_img2);
                new_img2.x = new_img2.stage.width/2;
 
                new_img2.addEventListener(Event.ENTER_FRAME,fonedet2);
                        function fonedet2(e:Event)
                        {
                        if ( new_img2.x >= -2400) { e.target.x-=skorost; }
                        else {
                                new_img2.removeEventListener(Event.ENTER_FRAME,fonedet2);
                                removeChild(new_img2);
                                trace ("Есть второй!");
 
                                var new_img3:img_0003=new img_0003;
                                new_img3.y = stage.stageHeight/2;
                                addChild(new_img3);
                                ...

Не получается две вещи:
Зациклить - после проигрывания последней картинки, начиналась все с начала(не пойму почему)
Сгладить движение картинок (картинки полноэкранные панорамы - по 5МБ каждая)

Добавлено через 1 час 26 минут
Типа того:
Код AS3:

import flash.display.Bitmap; 
import flash.display.BitmapData;
 
const IMAGE_URL:String = "img/001.jpg";
 
var ldr:Loader = new Loader();
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, ldr_complete);
ldr.load(new URLRequest(IMAGE_URL));
 
var bitmap1:Bitmap;
 
function ldr_complete(evt:Event):void {
        var bmp:Bitmap = ldr.content as Bitmap;
 
        var myBitmap:Bitmap = new Bitmap(bmp.bitmapData);
        myBitmap.x =0;
        myBitmap.y = 0;
        addChild(myBitmap);
 
        addEventListener(Event.ENTER_FRAME, scrollBitmap);
}
 
 
function scrollBitmap(event:Event):void
{
    myBitmap.scroll(1, 0);
}

Выдает ошибку: обращение несуществующего свойства myBitmap
Что не так?

Wolsh 05.03.2014 18:36

myBitmap у Вас объявлена в функции ldr_complete, и является ее локальной (внутренней) переменной, невидимой для других членов класса.
Нужно объявить ее в теле класса, как это сделано с ldr.

cvasy 06.03.2014 11:20

Спасибо. Исправил:
Код AS3:

import flash.display.Bitmap; 
import flash.display.BitmapData;
 
const IMAGE_URL:String = "img/001.jpg";
 
var ldr:Loader = new Loader();
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, ldr_complete);
ldr.load(new URLRequest(IMAGE_URL));
 
var bmp:Bitmap = ldr.content as Bitmap;
var myBitmap:Bitmap = new Bitmap(bmp.bitmapData);
 
function ldr_complete(evt:Event):void {
        myBitmap.x =0;
        myBitmap.y = 0;
        addChild(myBitmap);
        addEventListener(Event.ENTER_FRAME, scrollBitmap);
}
 
function scrollBitmap(event:Event):void {
    myBitmap.scroll(-1, 0);
}

Но теперь новая ошибка:
Обращение к возможно неопределенному методу scroll через ссылку статического типа flash.display:Bitmap
Что не так в коде?

Wolsh 06.03.2014 13:38

Надо было только объявить в теле класса, а инициализировать (присвоить конкретное значение) только когда картинка загрузится. То есть в теле пишете просто var myBitmap:Bitmap; — это Объявление переменной. А в обработчике события окончания загрузки присваиваете ей значение: myBitmap = new Bitmap( (ldr.content as Bitmap).bitmapData );
Только, если их много будет, то надо складывать ссылки на битмапдаты (или битмапы?) в какой-нибудь массив.

Добавлено через 5 минут
Цитата:

Что не так в коде?
Да просто в тот момент, когда Вы присваиваете переменной битмап из битмапдаты, этой битмапдаты нет. Она лежит себе на сервере и никого не трогает. Ее же надо загрузить сначала))

cvasy 06.03.2014 13:46

И все таки не понимаю, что не так. Вроде код-то простой...
Код AS3:

import flash.display.Bitmap; 
import flash.display.BitmapData;
import flash.events.Event;
 
const IMAGE_URL:String = "img/001.jpg";
 
var ldr:Loader = new Loader();
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, ldr_complete);
ldr.load(new URLRequest(IMAGE_URL));
 
var myBitmap:Bitmap = new Bitmap;
 
function ldr_complete(event:Event):void {
 
        myBitmap = new Bitmap( (ldr.content as Bitmap).bitmapData );
        myBitmap.x = 0;
        myBitmap.y = 0;
        addChild(myBitmap);
        addEventListener(Event.ENTER_FRAME, scrollBitmap);
}
 
function scrollBitmap(event:Event):void {
    myBitmap.scroll(-1, 0);
}

И опять ошибка: 1061: Обращение к возможно неопределенному методу scroll через ссылку статического типа flash.display:Bitmap.


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

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