我有一些我在Flash Professional CS5中可视化创建的类,它将绘制的结果传输到MovieClip并将符号勒入AS代码。现在,我想在课堂上添加一些属性。更具体地说,我创建了Ball类,并希望添加表示垂直和水平速度的变量。如何编辑课程才能完成?另外,当我想在类中添加一些可见的外部元素时,我首先决定在代码本身中添加MovieClip属性,但后来调用了对我来说非常适合的方法.addChild()。现在,我不能对不可见的属性做同样的事情。那么,使用.addChild()添加可见元素并在代码本身中添加它们之间有什么区别?我现在可以在代码中添加任何内容吗?
答案 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将找到该类的定义,并使用它来代替生成的类。
注意:
我不明白你的意思是“添加不可见的属性”。 addChild()函数应该从子类DisplayObjectContainer(特别是Sprite和MovieClip)的所有内容开始工作,并且可以处理子类DisplayObject的所有内容(包括Sprite,MovieClips,Bitmaps,TextFields和Shapes)
答案 1 :(得分:1)
你应该避免将物理学与实际的视觉表现混合在一起。尝试制作一个包含velocityX
,velocityY
和对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导出对象时使用的。