我无法从 AS3 类文件控制舞台中的 MovieClip
Posted
技术标签:
【中文标题】我无法从 AS3 类文件控制舞台中的 MovieClip【英文标题】:I can't control MovieClip in the stage from AS3 class file 【发布时间】:2018-04-24 13:49:24 【问题描述】:我在我的 fla 文件中创建了一个符号 (MovieClip) 并将其添加到框架中。然后我在属性面板上给它实例名称:“myMC”
然后尝试从我的目录中的类文件控制它:root\Test\MyClass.as
package Test
import flash.display.MovieClip;
public class MyClass extends MovieClip
public function MyClass()
var myMC:MovieClip = getChildByName("myMC") as MovieClip;
myMC.gotoAndStop(2);
之后,将类导入fla并尝试运行:
import Test.MyClass;
var LaunchMyClass:MyClass = new MyClass();
并得到这个错误,
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Test::MyClass()
at Test_fla::MainTimeline/frame1()
请注意,我正在尝试控制舞台中的 MovieClip,而不是从库中调用它。
【问题讨论】:
【参考方案1】:首先,请务必发布您在问题中收到的错误消息。让事情变得更容易。
但是现在让我们看看你的脚本:
我在我的 fla 文件中创建了一个符号 (MovieClip) 并将其添加到 框架。然后我将它添加为一个孩子使用
addChild(myMC);
如果您将它放在舞台上并给 MovieClip 一个 Instancename,则无需调用 addChild。
在 as3 中,以大写字母开头的类名很方便,因此不要将 myClass 称为 MyClass。
您的包缺少构造函数,函数的名称必须与类名和 .as 文件名相同。
getChildByName()
方法需要一个字符串,因此您必须将 myMc
括在引号中
package
import flash.display.MovieClip;
public class MyClass extends MovieClip
// Constructor
public function MyClass()
// constructor code
var myMC:MovieClip = getChildByName("myMC") as MovieClip;
myMC.gotoAndStop(2);
// End Constructor
【讨论】:
我试过你说的,但又出现了另一个问题。编辑帖子以获取详细信息。 好吧,我以为你使用 MyClass.as 作为你的 fla 的文档类。您到底想实现什么,MyClass 的目的是什么? @theRaggedyMan 我正在尝试使用 MyClass 控制场景中的影片剪辑。我有一个包含许多电影剪辑的复杂游戏。我曾经通过 fla 文件控制它们,但代码及时变得混乱,所以我想使用类来分离我的代码。以上是关于我无法从 AS3 类文件控制舞台中的 MovieClip的主要内容,如果未能解决你的问题,请参考以下文章
当添加到另一个 AS 类文件的舞台时,AS3 访问 MovieClip
如何阻止扩展舞台的动画剪辑的边缘进入 AS3 中的舞台边界?
Flash as3 将一个类中的方法调用到另一个放在舞台上的类。