【问题标题】:Creating Classes and Properties in AS3在 AS3 中创建类和属性
【发布时间】:2010-08-28 00:38:24
【问题描述】:

我是 AS3 的新手。学习如何创建类。 comp = new HouseObjects 是在创建一个新类吗? comp 是否创建了 HouseObjects 的实例?我意识到这是在公共类 TreeHouse 中。我在想 HouseObjects,我如何设置它不是一个类...不确定设置类和属性的正确方法是什么。

我还注意到,当我尝试使用相同的链接名称 HouseObjects 链接另一个影片剪辑时,它要求输入一个唯一的类。我正在尝试从同一个名为 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

【问题讨论】:

    标签: actionscript-3 function properties class object


    【解决方案1】:

    我不太确定我是否正确理解了您的问题。 comp = new HouseObjects 创建一个 HouseObjects 类型的新实例(对象)。 (对 OOP 基础知识进行一点研究可能会让您的生活更轻松。)

    关于»请输入唯一的类名«错误:您不能将同一个类分配给两个库符号,因为该符号在内部与类挂钩,因此如果您创建一个新实例 (var x = new HouseObjects; addChild(x);),则链接符号的内容也会添加到显示列表中。如果有多个库符号链接到同一个类,Flash 编译器如何知道选择哪一个?

    【讨论】:

      【解决方案2】:

      您的问题非常广泛,正如 klickverbot 所建议的,如果您花一点时间了解基本的 OOP 概念会更好。

      有很多资源可以帮助您开始使用 AS3,例如查看此 http://tv.adobe.com/watch/colin-moocks-lost-actionscript-weekend/course-1-introduction

      Colin Moock 的教程非常容易上手,将为您提供入门所需的大部分工具。

      【讨论】:

        【解决方案3】:

        如果您是 AS3 的新手,尤其是 OOP,您应该查看 Moock's Essential Actionscript 3,这对于在 AS3 中逐步学习 OOP 来说非常棒。

        HouseObjects 似乎是一个类,您正在为变量 comp 创建它的 new 实例

        你有一个重复的定义。您似乎正在尝试使用 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 的对话框和其他复杂问题时,会更容易理解:>

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-21
          • 1970-01-01
          • 2010-10-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-27
          相关资源
          最近更新 更多