Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.01.2009, 18:36
SeaQuest вне форума Посмотреть профиль Отправить личное сообщение для SeaQuest Найти все сообщения от SeaQuest
  № 1  
Ответить с цитированием
SeaQuest
 
Аватар для SeaQuest

Регистрация: Jun 2007
Адрес: Москва
Сообщений: 86
По умолчанию Копирование загруженных картинок через 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);
Не работает. На форуме в инете об этом только разговор, а работающего кода-примера так и не нашел. А справка от adobe - упаси боже, ее понимают только профи.

Старый 18.01.2009, 18:50
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 2  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Вторая часть кода должна выполняться ПОСЛЕ срабатывания onLoadComplete, а у вас она выполняется ДО.

Старый 18.01.2009, 19:17
SeaQuest вне форума Посмотреть профиль Отправить личное сообщение для SeaQuest Найти все сообщения от SeaQuest
  № 3  
Ответить с цитированием
SeaQuest
 
Аватар для SeaQuest

Регистрация: Jun 2007
Адрес: Москва
Сообщений: 86
Код 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);
И так не работает.

Старый 18.01.2009, 19:25
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Работает. Хотя вместо onLoadComplete стоит использовать onLoadInit.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 18.01.2009, 19:31
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 5  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
1) вынесите import наружу из обработчика, так писать нехорошо, импорты принято писать в начале кода
2) содержимое становится доступно при вызове onLoadInit, а не onLoadComplete - смените обработчик где происходит отрисовка - и все заработает

Цитата:
Работает. Хотя вместо onLoadComplete стоит использовать onLoadInit.
Разве? У меня на комплит не работает, только на Init, Flash CS3, AS2
__________________
4am is time to rock

Старый 18.01.2009, 19:35
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Вот и я удивился, что работает. Но потом понял, что не зря я onLoadInit упомянул, так как я видел загруженную фотку, а не битмап
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 18.01.2009, 20:02
Fatality вне форума Посмотреть профиль Отправить личное сообщение для Fatality Найти все сообщения от Fatality
  № 7  
Ответить с цитированием
Fatality
 
Аватар для Fatality

Регистрация: Jan 2009
Адрес: Одесса
Сообщений: 309
Отправить сообщение для Fatality с помощью ICQ
Цитата:
Сообщение от SeaQuest Посмотреть сообщение
А справка от adobe - упаси боже, ее понимают только профи.
Ура!!! я профи ибо уже пол года как справка меня выручает.

Старый 18.01.2009, 20:44
SeaQuest вне форума Посмотреть профиль Отправить личное сообщение для SeaQuest Найти все сообщения от SeaQuest
  № 8  
Ответить с цитированием
SeaQuest
 
Аватар для SeaQuest

Регистрация: Jun 2007
Адрес: Москва
Сообщений: 86
Код 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?
И вообще мне нужно чтобы копирование работало за пределами функции, тогда как?


Последний раз редактировалось SeaQuest; 18.01.2009 в 20:48.
Старый 18.01.2009, 21:30
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 9  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Цитата:
А почему не хочет при onLoadComlete?
Пункт 2 моего ответа: недоступно содержимое еще. В as1 и as2 onLoadComplete показывает что файл загружен на 100%, до отображения его на экране, доступа к данным картинки или коду загруженного swf(если грузим флешку). В as3 кстати это уже не так.

Цитата:
И вообще мне нужно чтобы копирование работало за пределами функции, тогда как?
Вынесите код копирования в отдельную функцию. Только не забывайте, что вызов функции должен осуществляться после завершения загрузки картинки.
__________________
4am is time to rock

Старый 19.01.2009, 19:16
SeaQuest вне форума Посмотреть профиль Отправить личное сообщение для SeaQuest Найти все сообщения от SeaQuest
  № 10  
Ответить с цитированием
SeaQuest
 
Аватар для SeaQuest

Регистрация: Jun 2007
Адрес: Москва
Сообщений: 86
Спасибо за помощь всем! Выкладываю исходник меню. Хочу улучшить и расширить то, что сделал. Уверен корявости в нем немало, а потому буду благодарен за предложения как сделать лучше типа встроить все в класс, убрать то, добавить это, воспользоваться тем-то. Все что видите в исходнике – сырой проект. Но базовые вещи такие как нарезка картинки и встройка ее в кнопку уже есть. Важная особенность: пункты сами будут раздвигаться для подпунктов в вертикальной плоскости с различными эффектами. Подскажите есть ли возможность нарезать картинку не масками и если да, то будет ли это лучше.
Чем менюшка обзаведется:
- xml файлом настройки
- флешкой настройки xml файла
- возможность рандомно подгружать фоновые картинки
- подпунктами
- эффектами появления подпунктов, пунктов, смены фоновых картинок
Прошу кому не лень, всего лишь развернуто направить меня в нужном направлении.
Вложения
Тип файла: zip Menu.zip (10.7 Кб, 68 просмотров)


Последний раз редактировалось SeaQuest; 19.01.2009 в 19:22.
Создать новую тему Ответ Часовой пояс GMT +4, время: 22:57.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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