在AS3中如何用键盘控制MC移动

来源:百度知道 编辑:UC知道 时间:2024/06/21 15:05:08
我想用键盘控制MC元件的移动,代码如下,但是却出现编译错误:1120:访问的属性cur未定义.
为什么会出现这种错误呢?正确的方法应该是什么,非常感谢.

package sample.book.display{
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
public class SampleAnitClassA extends MovieClip {
public function SampleAnitClassA() {
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyHandler);
var cur:xyanit = new xyanit();//库中有一个MC元件,导出的类名为”xyanit”
addChild(cur);
}
private function keyHandler(evt:KeyboardEvent):void {
trace("Key Press: " + evt.keyCode);
if(evt.keyCode == 37)
cur.x - = 5;
trace("Test");//此处如果把上一行(cur.x - = 5;)注释掉可以输出"Test"
}
}
}

这是因为你没有注意变量的作用域,你的cur变量时声明在构造函数中的,当构造函数执行完毕,cur就被回收了,它并不是类的变量,你可以这样写:
package sample.book.display{
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
public class SampleAnitClassA extends MovieClip {
var cur:xyanit;
public function SampleAnitClassA() {
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyHandler);
cur = new xyanit();
addChild(cur);
}
private function keyHandler(evt:KeyboardEvent):void {
trace("Key Press: " + evt.keyCode);
if(evt.keyCode == 37)
cur.x -= 5;
trace("Test");//此处如果把上一行(cur.x -= 5;)注释掉可以输出"Test"
}
}
}
应该好好的学习下基本知识,能够避免很多这样的错误,呵呵
ps:你的自减符号也有问题是“-=”而不是“- =”中间没有空格