我是AS3的新手。学习如何创建类。 comp = new HouseObjects
是否正在创建新课程? comp是否创建了HouseObjects的实例?我意识到这是在公共类TreeHouse中。我在想HouseObjects,我如何设置它不是一个类......不确定设置类和属性的正确方法。
我还注意到,当我尝试使用相同的链接名称HouseObjects链接另一个movieclip时,它要求输入一个唯一的类。我正在尝试从名为HouseObjects的同一个类创建多个实例。
包{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
public class TreeHouse extends MovieClip
{
private var comp:MovieClip;
var powerData:int; // stores user data (of selected data)
//var currentPower:int; // stores current power
public function TreeHouse()
{
comp = new HouseObjects; // linkage in library
comp.power = 2; // amount of power
comp.name = "comp";
comp.buttonMode = true;
comp.bstate = 0; // button state
//add event listeners -- listens to functions that are called
comp.addEventListener(MouseEvent.MOUSE_OVER, rolloverToggle);
comp.addEventListener(MouseEvent.MOUSE_OUT, rolloutToggle);
comp.addEventListener(MouseEvent.CLICK, toggleClick);
comp.addEventListener(MouseEvent.CLICK, toggleClick);
stage.addChild(comp); // add computer to stage -----------------------------------
trace("tracing...");
comp.x = 100;
comp.y = 100;
}
// function rollOver --------------------------------------------------------------
function rolloverToggle(e:MouseEvent) {
if (e.currentTarget.currentFrame == 1)
e.currentTarget.gotoAndStop(2);
if (e.currentTarget.currentFrame == 3)
e.currentTarget.gotoAndStop(4);
}
// function rollOut-- --------------------------------------------------------------
function rolloutToggle(e:MouseEvent) {
if (e.currentTarget.currentFrame == 2)
e.currentTarget.gotoAndStop(1);
if (e.currentTarget.currentFrame == 4)
e.currentTarget.gotoAndStop(3);
}
// function toggleClick-------------------------------------------------------------
function toggleClick(e:MouseEvent) {
// On MouseEvent gotoAndStop(Frame Number)
if (e.currentTarget.currentFrame == 2)
{
e.currentTarget.gotoAndStop(3);
e.currentTarget.bstate = 1;
}
if (e.currentTarget.currentFrame == 4)
{
e.currentTarget.gotoAndStop(1);
e.currentTarget.bstate = 0;
}
//var powerData:int = HouseObjects[e.currentTarget.power]; // set power value
// Find out which object selected-------------------------------------------------
//trace("movieClip Instance Name = " + e.currentTarget); // [object Comp]
//trace(houseArray[e.currentTarget.name]); // comp
trace("using currentTarget: " + e.currentTarget.name); // comp
//trace("powerData: " + powerData); // power of user data
//trace("houseArray: " + houseArray[0]); // the 0 index of house array
trace(e.currentTarget.power); // currentTarget's power************
}
} //end of class
} // end of package
答案 0 :(得分:0)
我不太确定我是否正确理解了你的问题。 comp = new HouseObjects
创建一个类型为HouseObjects的新实例(对象)。 (对OOP基础知识的一点研究可能会让你的生活更轻松。)
关于»请输入一个唯一的类名«错误:您不能将同一个类分配给两个库符号,因为符号在内部连接到类,因此如果您创建一个新实例(var x = new HouseObjects; addChild(x);
) ,链接符号的内容也会添加到显示列表中。如果有多个库符号链接到同一个类,那么Flash编译器将如何知道选择哪一个?
答案 1 :(得分:0)
你的问题非常广泛,正如klickverbot建议的那样,如果花一点时间来理解基本的OOP概念会更好。
有很多资源可以帮助您开始使用AS3,例如检查一下 http://tv.adobe.com/watch/colin-moocks-lost-actionscript-weekend/course-1-introduction
Colin Moock的教程非常容易理解,它将为您提供入门所需的大部分工具。
答案 2 :(得分:0)
如果您不熟悉AS3,特别是OOP,那么您应该查看Moock's Essential Actionscript 3,这对于AS3中的OOP中的分步教育来说是非常棒的。
HouseObjects
似乎是一个类,您正在为变量comp
你有一个重复的定义。您似乎正在尝试使用Flash Pro为HouseObjects
扩展lightbulb
。它在Flash Pro中不起作用。您正在创建MovieClip
符号并为其指定类定义。它必须扩展MovieClip
,在这种情况下你不能改变它。您可以在AS3文件中扩展HouseObjects
并在您的应用程序中使用它。
个人认为,如果你想真的通过AS3了解OOP,你应该得到这本书并退出Flash Pro。使用Flash Builder,FDT,Flash Develop或IntelliJ IDEA等IDE。当你摆脱Flash Pro IDE的对话框和其他复杂问题时,它会更容易理解:>