我有一些实现接口的类,但也扩展了Sprite类:
package {
public interface IState {
function addMonster():void;
}
}
package {
public class Fuzzy extends Sprite implements IState {
public function addMonster():void {
}
}
}
package {
public class LizardSkin extends Sprite implements IState {
public function addMonster():void {
}
}
}
// Document class
package {
public class Main extends MovieClip {
private var state:IState;
public function Main():void {
state = new Fuzzy();
addChild(state);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试addChild(state)时,我不断收到错误消息1067:将类型IState的值隐式强制转换为不相关的类型flash.display:DisplayObject.
现在我知道我已经看过一个类扩展了MovieClip/Sprite并实现了一个接口的例子......我能做些什么才能让它为舞台添加"状态",同时实现我想要的方法?
一个简单的演员阵容应该在大部分时间内完成:
addChild(state as DisplayObject);
Run Code Online (Sandbox Code Playgroud)
编译器会引发该错误,否则因为它不假设IState总是通过某个东西实现DisplayObject,但是如果你可以保证你总是可以强制转换的条件.