Форум 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)
-   -   Копирование загруженных картинок через BitmapData (http://www.flasher.ru/forum/showthread.php?t=120361)

SeaQuest 18.01.2009 18:36

Копирование загруженных картинок через BitmapData
 
Собсно:
Код AS1/AS2:

//Загружаем картинку в мувик-контейнер
var mc_ldr:MovieClipLoader = new MovieClipLoader();
var Listener:Object = new Object();
Listener.onLoadStart = function(mc:MovieClip) {}
Listener.onLoadComplete = function(mc:MovieClip) {}
_root.createEmptyMovieClip("mc1",0);
mc_ldr.loadClip("bg.jpg",mc1);
mc_ldr.addListener(Listener);
 
// Теперь картинка в mc1 и пытаемся ее скопировать в другой программный мувик
 
import flash.display.BitmapData;
var bmd: BitmapData = new BitmapData(100, 100, true, 0x000000);
bmd.draw(mc1);
_root.createEmptyMovieClip("mc2",1);
_root.mc2._x = 200;
_root.mc2.attachBitmap(bmd,1,'auto',true);

Не работает.:mad: На форуме в инете об этом только разговор, а работающего кода-примера так и не нашел. А справка от adobe - упаси боже, ее понимают только профи.

chingachgoog 18.01.2009 18:50

Вторая часть кода должна выполняться ПОСЛЕ срабатывания onLoadComplete, а у вас она выполняется ДО.

SeaQuest 18.01.2009 19:17

Код AS1/AS2:

//Загружаем картинку в мувик-контейнер
var mc_ldr:MovieClipLoader = new MovieClipLoader();
var Listener:Object = new Object();
Listener.onLoadStart = function(mc:MovieClip) {
};
Listener.onLoadComplete = function(mc:MovieClip) {
        import flash.display.BitmapData;
        var bmd:BitmapData = new BitmapData(100, 100, true, 0x000000);
        bmd.draw(mc1);
        _root.createEmptyMovieClip("mc2",1);
        _root.mc2._x = 200;
        _root.mc2.attachBitmap(bmd,1,'auto',true);
}
_root.createEmptyMovieClip("mc1",0);
mc_ldr.loadClip("bg.jpg",mc1);
mc_ldr.addListener(Listener);

И так не работает.

iNils 18.01.2009 19:25

Работает. Хотя вместо onLoadComplete стоит использовать onLoadInit.

DarkLight 18.01.2009 19:31

1) вынесите import наружу из обработчика, так писать нехорошо, импорты принято писать в начале кода
2) содержимое становится доступно при вызове onLoadInit, а не onLoadComplete - смените обработчик где происходит отрисовка - и все заработает

Цитата:

Работает. Хотя вместо onLoadComplete стоит использовать onLoadInit.
Разве? У меня на комплит не работает, только на Init, Flash CS3, AS2

iNils 18.01.2009 19:35

Вот и я удивился, что работает. Но потом понял, что не зря я onLoadInit упомянул, так как я видел загруженную фотку, а не битмап :)

Fatality 18.01.2009 20:02

Цитата:

Сообщение от SeaQuest (Сообщение 791833)
А справка от adobe - упаси боже, ее понимают только профи.

Ура!!! я профи :) ибо уже пол года как справка меня выручает.

SeaQuest 18.01.2009 20:44

Код AS1/AS2:

import flash.display.BitmapData;
var mc_ldr:MovieClipLoader = new MovieClipLoader();
var Listener:Object = new Object();
Listener.onLoadStart = function(mc:MovieClip) {
};
Listener.onLoadInit = function(mc:MovieClip) {
 
        var bmd:BitmapData = new BitmapData(100, 100, true, 0x000000);
        bmd.draw(mc1);
        _root.createEmptyMovieClip("mc2",1);
        _root.mc2._x = 200;
        _root.mc2.attachBitmap(bmd,1,'auto',true);
}
_root.createEmptyMovieClip("mc1",0);
mc_ldr.loadClip("bg.jpg",mc1);
mc_ldr.addListener(Listener);

Действительно работает! А почему не хочет при onLoadComlete?
И вообще мне нужно чтобы копирование работало за пределами функции, тогда как?

DarkLight 18.01.2009 21:30

Цитата:

А почему не хочет при onLoadComlete?
Пункт 2 моего ответа: недоступно содержимое еще. В as1 и as2 onLoadComplete показывает что файл загружен на 100%, до отображения его на экране, доступа к данным картинки или коду загруженного swf(если грузим флешку). В as3 кстати это уже не так.

Цитата:

И вообще мне нужно чтобы копирование работало за пределами функции, тогда как?
Вынесите код копирования в отдельную функцию. Только не забывайте, что вызов функции должен осуществляться после завершения загрузки картинки.

SeaQuest 19.01.2009 19:16

Вложений: 1
Спасибо за помощь всем! Выкладываю исходник меню. Хочу улучшить и расширить то, что сделал. Уверен корявости в нем немало, а потому буду благодарен за предложения как сделать лучше типа встроить все в класс, убрать то, добавить это, воспользоваться тем-то. Все что видите в исходнике – сырой проект. Но базовые вещи такие как нарезка картинки и встройка ее в кнопку уже есть. Важная особенность: пункты сами будут раздвигаться для подпунктов в вертикальной плоскости с различными эффектами. Подскажите есть ли возможность нарезать картинку не масками и если да, то будет ли это лучше.
Чем менюшка обзаведется:
- xml файлом настройки
- флешкой настройки xml файла
- возможность рандомно подгружать фоновые картинки
- подпунктами
- эффектами появления подпунктов, пунктов, смены фоновых картинок
Прошу кому не лень, всего лишь развернуто направить меня в нужном направлении.


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

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