Как преобразовать Shape в MovieClip, используя только ActionScript 3.0 - PullRequest
0 голосов
/ 08 марта 2011
import flash.display.Shape;
import flash.display.Graphics;


stage.addEventListener(Event.ENTER_FRAME, startAnim);

function startAnim(e:Event):void
{
    var shape1:Shape = new Shape();
    shape1.graphics.beginFill(0x333333,1);
    shape1.graphics.drawRect(40,50,250,125);
    shape1.graphics.endFill();

    addChild(shape1); // this will add a shape of rectangle to stage

}

Это очень простая функция, создающая прямоугольную форму на сцене. Хорошо, но проблема в том, как я могу преобразовать SHAPE в MOVIECLIP , используя только ActionScript, чтобы я мог добавлять события в одно и то же ( shape1 ).

Ответы [ 2 ]

1 голос
/ 08 марта 2011

ммм, используя MovieClip вместо Shape. мувиклип также имеет графический объект.

import flash.display.MovieClip ; 
//import flash.display.Graphics;//not needed

//stage.addEventListener(Event.ENTER_FRAME, startAnim); //remove enterframe

//function startAnim(e:Event):void { //no need for a handler
    var shape1:MovieClip = new MovieClip();
    shape1.graphics.beginFill(0x333333,1); 
    shape1.graphics.drawRect(40,50,250,125);     
    shape1.graphics.endFill();

    addChild(shape1); // this will add a MovieClip of rectangle to stage

    shape1.addEventListener(MouseEvent.MOUSE_DOWN, dragShape);

    function dragShape(E:MouseEvent)
    {
        shape1.startDrag()
    }

shape1.addEventListener(MouseEvent.MOUSE_UP, dropShape);

    function dropShape(E:MouseEvent)
    {
        shape1.stopDrag()
    }
//} no need for that either :)

будьте осторожны, так как ваша функция вызывается при ENTER_FRAME = 25 или более раз в секунду, поэтому вы создадите и добавите клип на сцену 25 или более раз в секунду + ссылка создается локально в функции, поэтому вы не сможете получить доступ к «shape1» извне, как только ваш объект будет создан.

0 голосов
/ 08 марта 2011

Не думаю, что вы можете конвертировать Shape в MovieClip.Что вы можете сделать, это создать класс MovieClip, а в конструкторе сгенерировать объект Shape и добавить его в MovieClip.

public class Car extends MovieClip {
    private var shape1:Shape = new Shape();
    public function Car() {
        shape1.graphics.beginFill(0x333333,1);
        shape1.graphics.drawRect(40,50,250,125);
        shape1.graphics.endFill();
        addChild(shape1); // this will add a shape of rectangle to stage
    }
}

Shape также имеет события.

  • активировать
  • добавлено
  • добавлено ToStage
  • деактивировать
  • enterFrame
  • удалено
  • удалено с участка
  • рендеринг

Но поскольку он не распространяется на InteractiveObject , вы не можете обрабатывать ввод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...