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

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

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

Регистрация: Jun 2009
Сообщений: 5
По умолчанию Работа с изображениями

Добрый день!
Вот решил открыть темку по работе с изображениями.
Первый вопрос будет касаться увеличения.
Публикую код:

Код AS1/AS2:
package  
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.BitmapDataChannel;
	import flash.display.Loader;
	import flash.display.MovieClip;
	import flash.display.SimpleButton;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.events.TimerEvent;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	import flash.net.URLRequest;
	import flash.utils.Timer;
 
	public class Main extends MovieClip
	{
 
		public var myImage:Bitmap;
		public var image:BitmapData;
		public var sizeRatio:Number = 0.3;
		public var rt:Timer;
 
		public function Main() 
		{
			var imageLoader:Loader = new Loader();
			imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoadComplete);
			imageLoader.load(new URLRequest("jj_big.jpg"));
 
		}
 
		private function imageLoadComplete(e:Event):void 
		{
			image = e.target.content.bitmapData;
			myImage = new Bitmap();
			myImage.bitmapData = new BitmapData(image.width, image.height, false, 0xFF0000);
			myImage.bitmapData.copyPixels(image, new Rectangle(0, 0, image.width, image.height) , new Point(0, 0));
			myImage.scaleX = sizeRatio;
			myImage.scaleY = sizeRatio;
 
			myImage.addEventListener("click", clickOnPreview);
			this.addChild(myImage);
		}
 
		private function clickOnPreview(e:Event):void 
		{
			rt = new Timer(1);
			rt.addEventListener(TimerEvent.TIMER, timerTick);
			rt.start();
		}
 
		private function timerTick(e:Event):void 
		{
			sizeRatio += 0.004;
			myImage.scaleX = sizeRatio;
			myImage.scaleY = sizeRatio;
			if (myImage.height * sizeRatio >= this.height)
			{
				rt.stop();
			}
		}
	}
}
Первый вопрос состоит в том, если запуск таймера поместить не по щелчку мыши, а непосредственно в код, то все отлично выполняется. Но на myImage навешан слушатель клика, по которому собственно и должна увеличиваться картинка. Но это событие не срабатывает.
Скажите, почему?

Старый 05.08.2010, 15:16
Random1984 вне форума Посмотреть профиль Отправить личное сообщение для Random1984 Найти все сообщения от Random1984
  № 2  
Ответить с цитированием
Random1984

Регистрация: Mar 2009
Адрес: (0,0,0)
Сообщений: 7
Bitmap не диспатчит событие "click"

положите его в спрайт

Старый 05.08.2010, 15:25
chester49 вне форума Посмотреть профиль Отправить личное сообщение для chester49 Найти все сообщения от chester49
  № 3  
Ответить с цитированием
chester49

Регистрация: Jun 2009
Сообщений: 5
Получается отдельный класс для этого писать надо?
А то ненагуглил Bitmap to Sprite...везде только Sprite to Bitmap..

Старый 05.08.2010, 15:31
leofit вне форума Посмотреть профиль Отправить личное сообщение для leofit Найти все сообщения от leofit
  № 4  
Ответить с цитированием
leofit
 
Аватар для leofit

Регистрация: Dec 2009
Сообщений: 428
1. Создаете спрайте
2. Кладете туда битмап ... ( addChild() )
3. Вешаете на спрайт слушатель события
4. Кликаете на спрайт.......
.....
.....
profit!!!!
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг

Старый 05.08.2010, 15:31
Random1984 вне форума Посмотреть профиль Отправить личное сообщение для Random1984 Найти все сообщения от Random1984
  № 5  
Ответить с цитированием
Random1984

Регистрация: Mar 2009
Адрес: (0,0,0)
Сообщений: 7
Код AS3:
//этого нинада 
//myImage.addEventListener("click", clickOnPreview);
//вместо него:
var spr:Sprite=new Sprite();
spr.addChild(myImage);
spr.addEventListener("click", clickOnPreview);
или просто
Код AS3:
addEventListener("click", clickOnPreview);

Старый 05.08.2010, 15:32
Hidest вне форума Посмотреть профиль Отправить личное сообщение для Hidest Найти все сообщения от Hidest
  № 6  
Ответить с цитированием
Hidest
 
Аватар для Hidest

Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
Код AS1/AS2:
var container:Sprite = new Sprite();
 
container.addChild(myImage);
 
addChild(container);
Контейнер уже может реагировать на мышь.


Последний раз редактировалось Hidest; 05.08.2010 в 15:58.
Старый 05.08.2010, 16:58
chester49 вне форума Посмотреть профиль Отправить личное сообщение для chester49 Найти все сообщения от chester49
  № 7  
Ответить с цитированием
chester49

Регистрация: Jun 2009
Сообщений: 5
спасибо большое за ответы!
Но тему не закрывайте, так как вопросы еще будут.

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:47.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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