Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как правильно от рисовать Клип в BitmapData? (http://www.flasher.ru/forum/showthread.php?t=140000)

warez_men 17.05.2010 16:16

Как правильно от рисовать Клип в BitmapData?
 
Вложений: 1
Делаю так

Код AS3:

package
{
        import flash.display.BitmapData;
        import flash.display.Sprite;
        import flash.display.StageAlign;
        import flash.display.StageScaleMode;
        import flash.events.MouseEvent;
        import flash.filters.GlowFilter;
        import flash.geom.Matrix;
        import flash.geom.Point;
 
        public class main extends Sprite
        {
                private var bmpd1:BitmapData;
                private var bmpd2:BitmapData;
                private var star1:Star;
                private var star2:Star;
                private var ddd1:ddd;
 
                public function main()
                {
                        stage.align = StageAlign.TOP_LEFT;
                        stage.scaleMode = StageScaleMode.NO_SCALE;
 
                        //создаем две звезды и добавляем их в список отображения
                        star1 = new Star(50);
                        addChild(star1);
 
 
                        var ddd1= new ddd();
                        addChild(ddd1 as Sprite);
 
                        // создаем два растровых изображения
                        bmpd1 = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0);                       
                        bmpd2 = bmpd1.clone();
                        stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoving);
                }
 
                private function onMouseMoving(event:MouseEvent):void
                {
                        // перемещаем star1 в позицию курсора мыши
                        star1.x = mouseX;
                        star1.y = mouseY;
 
                        // очищаем растровые изображения
                        bmpd1.fillRect(bmpd1.rect, 0);
                        bmpd2.fillRect(bmpd2.rect, 0);
 
 
                        bmpd1.draw(star1, new Matrix(1, 0, 0, 1, star1.x, star1.y));
                        bmpd2.draw(ddd1 as Sprite, new Matrix(1, 0, 0, 1, 200, 200));
 
                        // проверяем столкновение
                        if(bmpd1.hitTest(new Point(), 255, bmpd2, new Point(), 255))
                        {
                                star1.filters = [new GlowFilter()];
                                //star2.filters = [new GlowFilter()];
                        }
                        else
                        {
                                star1.filters = [];
                        }
                }
        }
 
 
}

вот так ругается
ArgumentError: Error #2005: Parameter 0 is of the incorrect type. Should be type IBitmapDrawable.
at flash.display::BitmapData/draw()
at main/onMouseMoving()

Вот проект целиком Вложение 24416

Волгоградец 17.05.2010 16:25

Ругается потому что твой мега информативный ddd1 равен null.

warez_men 17.05.2010 16:33

ну так это ж клип в библиотеке он есть не пойму что ему нужно то еще?

Волгоградец 17.05.2010 16:36

Вот эту строчку
Код AS3:

var ddd1= new ddd();
addChild(ddd1 as Sprite);

Замени на эту
Код AS3:

ddd1 = new ddd();
addChild(ddd1);

P.S.: и да, научись правильно называть переменные, да и придерживаться соглашений по оформлению кода, а то сложные проекты компилироваться не будут.

warez_men 17.05.2010 16:40

спасибо! Это тест поэтому от балды назвал переменные но все таки не пойму почему у меня ромб не на рисовался из библиотеки?

Волгоградец 17.05.2010 16:50

Потому что не создал Bitmap и не добавил его на сцену.

warez_men 17.05.2010 16:52

а это тогда что?
Код AS3:

bmpd2 = bmpd1.clone();


Волгоградец 17.05.2010 16:56

Это BitmapData.

warez_men 17.05.2010 16:58

Волгоградец, че то не фига не пойму а нафига тогда Bitmap? и как мне из клипа его сделать?

Волгоградец 17.05.2010 17:03

BitmapData - это набор информации о картинке, которую нельзя просто добавить в дисплей лист. Сначала надо создать экземпляр Bitmap, в который надо передать твою BitmapData. А этот Bitmap добавить в дисплей лист. Короче покури хэлп для начала.

warez_men 17.05.2010 17:05

а де его курить то?

Волгоградец 17.05.2010 17:07

http://help.adobe.com/en_US/FlashPla...ctionscript/3/

Molecula 17.05.2010 17:24

Adobe - это вообще мега курильня.

warez_men 17.05.2010 17:35

О спасиб :)

Добавлено через 40 минут
Все понял свою ошибку всем спасибо!


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

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