Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   MovieClip в BitmapData по фреймам (http://www.flasher.ru/forum/showthread.php?t=114542)

SunShadow 01.08.2008 14:06

MovieClip в BitmapData по фреймам
 
Здравствуйте уважаемые
Вопрос следующий. Создал мувик, в нем на каждом фрейме своя картинка. Мне нужно эту картинку упаковать в Bitmap. Вот собственно код:
Код:

var bitmap:BitmapData = new BitmapData(450,525, false, 0x33CCFF);
                        var image:Bitmap;
                        var mc:MyPhoto = new MyPhoto();
                        mc.gotoAndStop(2); // без этого работает, первый кадр видно
                        bitmap.draw(mc);
                        image = new Bitmap(bitmap);
                        addChild(image);

Покопался по документации, воспользовался поиском на форуме. Нашел очень много как вставлять картинки, но со сменой фрейма ни одной темы не видел. все происходит на втором фрейме после полной загрузки ролика через preloader.
Скажите реально снять отпечаток с нужного фрейма? Если да то как это сделать?

litebox 01.08.2008 14:33

Я аналогичную вещь делал - у меня все работает ок, единсвтенное отличие - у меня мувик, в котором я меняю кадр и вывожу на битмап лежит на timeline'е, а не аттачится из библиотеки. И еще, зачем задавать цвет прозрачности, если Вы указываете "без прозрачности" (третий параметр false)

silin 01.08.2008 14:38

с мувиком из библиотеки тоже все работает

>>все происходит на втором фрейме после полной загрузки ролика через preloader

а что там происходит, может надо просто подождать пока произойдет это "все" ?

SunShadow 01.08.2008 14:51

Цитата:

Сообщение от silin (Сообщение 755746)
а что там происходит, может надо просто подождать пока произойдет это "все" ?

Ждем когда bytesLoaded==bytesTotal, а дальше уже идем дальше. Прелоадер в первом кадре как обычно. Может кто нибудь рабочий примерчик кинуть, чтобы поковыряться.

silin 01.08.2008 15:01

так и рисовать эти кадры надо когда все загрузится, а не сразу..

SunShadow 01.08.2008 15:11

Цитата:

Сообщение от silin (Сообщение 755752)
так и рисовать эти кадры надо когда все загрузится, а не сразу..

Вот прелоадер в первом кадре
Код:

package main {
        import flash.display.MovieClip;
        import flash.display.DisplayObjectContainer;
        import flash.text.TextField;
        import flash.events.*;

        dynamic public class preloader extends MovieClip {
                public function preloader() {
                        addEventListener(Event.ENTER_FRAME, Update);
                }

                public function Update(e : Event):void {
                        var bytesLoaded:Number = stage.loaderInfo.bytesLoaded;
                        var bytesTotal:Number = stage.loaderInfo.bytesTotal;
                        var s:String = "";
                        var percent:Number = 0;
                        var mc:MovieClip = parent as MovieClip;
                        if (bytesTotal>0){
                                percent = Math.floor(bytesLoaded/bytesTotal*100);
                                s = percent+"% ("+
                                Math.round(bytesLoaded/1024)+"kb / "+
                                Math.round(bytesTotal/1024)+"kb)";
                        }
                        txt.text="Loading... "+s;
                        progressbar.gotoAndStop(percent+1);
                        // Если полностью загрузились, то переходим на второй кадр
                        if (bytesLoaded==bytesTotal || bytesTotal==0){
                                removeEventListener(Event.ENTER_FRAME, Update);
                                mc.gotoAndStop("StartPage");
                                mc.startGame(); // это как раз старт работы с роликом.
                        }
                }
               
        }
}


SunShadow 01.08.2008 15:27

Что-то я ничего не понимаю. Эксперементировал с trace проверяю какое значение дает переменная... Все заработало. Убираю строчку с trace работает. Сейчас фактически код один в один как отправлял, ничего не менял и не дополнял и все работает. Мне кажется я схожу с ума

silin 01.08.2008 15:31

т.е. момент загрузки ты можешь отследить, вот после этого и срисовывай фреймы

точнее сказать не могу, потому как непонятно причем здесь прелоадер и кто/откуда кого грузит..

litebox 01.08.2008 15:43

Может лучше создать пустышку, которая будет загружать в себя всю флэшку с графикой:
Код:

loader = new Loader();
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, eventProgress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, eventComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, eventIOError);

Так Вы точно будете знать, что и когда загрузилось, и загрузилось ли вообще

tyapichu 01.08.2008 17:11

Цитата:

Сообщение от litebox (Сообщение 755772)
Может лучше создать пустышку, которая будет загружать в себя всю флэшку с графикой:
Код:

loader = new Loader();
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, eventProgress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, eventComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, eventIOError);

Так Вы точно будете знать, что и когда загрузилось, и загрузилось ли вообще

извините, а почему у вас через contentLoaderInfo слушатели добавляются? это какой-то хитрый метод загрузки? разобраться не могу :(


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

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