Форум 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=143030)

chester49 05.08.2010 14:58

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

Код 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 навешан слушатель клика, по которому собственно и должна увеличиваться картинка. Но это событие не срабатывает.
Скажите, почему?

Random1984 05.08.2010 15:16

Bitmap не диспатчит событие "click"

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

chester49 05.08.2010 15:25

Получается отдельный класс для этого писать надо?
А то ненагуглил Bitmap to Sprite...везде только Sprite to Bitmap..

leofit 05.08.2010 15:31

1. Создаете спрайте
2. Кладете туда битмап ... ( addChild() )
3. Вешаете на спрайт слушатель события
4. Кликаете на спрайт.......
.....
.....
profit!!!!

Random1984 05.08.2010 15:31

Код AS3:

//этого нинада 
//myImage.addEventListener("click", clickOnPreview);
//вместо него:
var spr:Sprite=new Sprite();
spr.addChild(myImage);
spr.addEventListener("click", clickOnPreview);

или просто
Код AS3:

addEventListener("click", clickOnPreview);


Hidest 05.08.2010 15:32

Код AS1/AS2:

var container:Sprite = new Sprite();
 
container.addChild(myImage);
 
addChild(container);

Контейнер уже может реагировать на мышь.

chester49 05.08.2010 16:58

спасибо большое за ответы!
Но тему не закрывайте, так как вопросы еще будут.


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

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