在AS3中编辑可视化创建的类

时间:2011-07-30 09:22:44

标签: flash actionscript-3 oop movieclip

我有一些我在Flash Professional CS5中可视化创建的类,它将绘制的结果传输到MovieClip并将符号勒入AS代码。现在,我想在课堂上添加一些属性。更具体地说,我创建了Ball类,并希望添加表示垂直和水平速度的变量。如何编辑课程才能完成?另外,当我想在类中添加一些可见的外部元素时,我首先决定在代码本身中添加MovieClip属性,但后来调用了对我来说非常适合的方法.addChild()。现在,我不能对不可见的属性做同样的事情。那么,使用.addChild()添加可见元素并在代码本身中添加它们之间有什么区别?我现在可以在代码中添加任何内容吗?

3 个答案:

答案 0 :(得分:2)

您需要做的是创建一个外部ActionScript文件来保存类定义。制作一个文件,称之为Ball.as,然后填写

package {
    import flash.display.*;
    import flash.events.*;

    public class Ball extends MovieClip {

        public var vx:Number = 0;
        public var vy:Number = 0;

        // add more variables here

        public function Ball() {

        }

        // add more functions here.

    }

}

在该类中,您可以放置​​所需的所有函数和变量,并能够从时间轴代码中访问它们。将它放在与.fla相同的文件夹中,并将球MovieClip导出为Ball,扩展flash.display.MovieClip。 Flash将找到该类的定义,并使用它来代替生成的类。

注意:

  • 如果/当您添加更多功能或变量时,请不要忘记添加访问修饰符。 (公共,私人,受保护)
  • 如果您更改了与.fla相关的文件夹,您还需要更改包,因此,如果您为游戏的所有来源创建了一个com / mygame文件夹,则需要更改第一行“package com.mygame {”并将MovieClip导出为“com.mygame.Ball”。
  • 您可能需要通过在public和class之间添加关键字“dynamic”来将类更改为动态类。这意味着您可以在运行时向类添加属性,但速度可能会受到影响。

我不明白你的意思是“添加不可见的属性”。 addChild()函数应该从子类DisplayObjectContainer(特别是Sprite和MovieClip)的所有内容开始工作,并且可以处理子类DisplayObject的所有内容(包括Sprite,MovieClips,Bitmaps,TextFields和Shapes)

答案 1 :(得分:1)

你应该避免将物理学与实际的视觉表现混合在一起。尝试制作一个包含velocityXvelocityY和对MovieClip的引用的球类。让Ball类保持update(),看起来像这样:

public function update() : void {
    ballMovieClip.x += velocityX;
    ballMovieClip.y += velocityY;
}

在您的Main课程中,您可以使用Event.ENTER_FRAME - 事件来调用ball.update();

这样您就可以独立更新Ball图形和物理代码。

答案 2 :(得分:1)

您可以通过扩展它或在其周围包装容器类来修改Flash导入的类。

这个包装器是我在2个游戏中选择的方法。我用它来添加各种与绘图相关的属性或其他对象。

public class WrapperOverSprite extends Sprite
{
  private var instanceFromFlash: SomeClassTypeFromFlashViaSWC: new SomeClassTypeFromFlashViaSWC();
  //Add whatever other variables you wish.

   public function WrapperOverSprite  ()
   {
     //Do stuff to your object.
   }

   //Can add whatever functions you wish...
}

毋庸置疑,这个方法是我通过我在Flash / Flex Builder中导入的SWC文件从Flash导出对象时使用的。