对AS3来说很新,仍然试图让它发挥作用。这样做时会出现1061错误。
这是我在.fla文件中的代码:
import ResizableBox;
var resizeBox:ResizableBox = new ResizableBox();
ResizableBox.startResize();
然后在名为ResizableBox.as的文件中,这里是代码:
package{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
public class ResizableBox extends MovieClip{
public function ResizableBox(){
addEventListener(MouseEvent.MOUSE_DOWN, startResize);
}
private function startResize(e:MouseEvent):void{
stage.addEventListener(MouseEvent.MOUSE_MOVE, handleResize);
stage.addEventListener(MouseEvent.MOUSE_UP, stopResize);
}
private function stopResize(e:MouseEvent):void{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, handleResize);
stage.removeEventListener(MouseEvent.MOUSE_UP, stopResize);
}
private function handleResize(e:MouseEvent):void{
this.scaleY = 1
this.height = this.mouseY
}
}
}
我不知道为什么我会收到错误。我也试过在公共函数中添加一个静态组件,但后来我得到1026错误(构造函数必须是实例方法)。我一直在寻找我做错了什么,但我无法弄明白。
我还将源路径正确设置到包含.as文件的文件夹。
非常感谢任何帮助!
编辑:
更改了ResizableBox.startResize(); resizeBox.startResize(null);
将public的startResize函数更改为public。
现在,当我运行该东西时,我没有错误,直到我使用此代码移动到框架。
TypeError: Error #1034: Type Coercion failed: cannot convert flash.display::MovieClip@1ddcc6a1 to ResizableBox.
at flash.display::MovieClip/gotoAndStop()
at CubeTotem_Test_fla::MainTimeline/goSettings()[CubeTotem_Test_fla.MainTimeline::frame1:27]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at ResizableBox/startResize()[C:\Users\Ecco T1\Documents\ResizableBox.as:12]
at CubeTotem_Test_fla::MainTimeline/frame6()[CubeTotem_Test_fla.MainTimeline::frame6:20]
at flash.display::MovieClip/gotoAndStop()
at CubeTotem_Test_fla::MainTimeline/goSettings()[CubeTotem_Test_fla.MainTimeline::frame1:27]
点击并拖动时,我试图让一个简单的方形缩放赢得Y方向。
最终编辑:让它发挥作用!我必须将框转换为符号并勾选"导出到Actionscript"并给它适当的类标签。现在我只需要从左上角移动它,因为除非我播放动画,否则它不会出现在舞台上
答案 0 :(得分:1)
在.fla中,替换:
ResizableBox.startResize();
与
resizeBox.startResize(null);
说明:
startResize()被编码为接受一个参数(MouseEvent对象)。你正在调用它而不给它一个参数。使用空引用调用它可能不是最佳实践,但您可以这样做。
您正尝试在ResizableBox 类上调用该方法(它不是静态方法,因此它无法找到它)。您需要在您创建的对象上调用该方法(即resizeBox)。
希望这能解决你的问题。
* EDIT1:你说它运行正常,直到你用这段代码移动到框架"。是"这个代码"你在问题中写的代码?或者它是另一段代码?
* EDIT2:哦,我讨厌远程调试...尝试添加this.addChild(resizeBox);
并删除resizeBox.startResize(null);
行(或只是发表评论)
* EDIT3:我想你可能在那里做错了什么。你能发布goSettings
方法的代码吗?
* EDIT4:所以您发布的初始代码来自第6帧。您可以发布该帧中的整个代码吗?
答案 1 :(得分:0)
将startResize
方法设为ResizableBox
公开..
public function startResize(e:MouseEvent):void{
然后在fla文件中,从对象中调用方法..
var resizeBox:ResizableBox = new ResizableBox();
resizeBox.startResize(null);