Создание классов и свойств в AS3 - PullRequest
0 голосов
/ 28 августа 2010

Я новичок в AS3.Учимся создавать классы.comp = new HouseObjects создает новый класс?Комп создает экземпляр HouseObjects?Я понимаю, что это внутри публичного класса TreeHouse.Я думаю, что HouseObjects, как я его настраивал, не является классом ... не уверен, как правильно настроить классы и свойства.

Также я заметил, что когда я пытался связать другой мувиклиписпользуя то же имя связывания HouseObjects - он попросил ввести уникальный класс.Я пытаюсь создать несколько экземпляров из одного класса под названием HouseObjects.

alt text

package {

 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

Ответы [ 3 ]

0 голосов
/ 28 августа 2010

Ваш вопрос довольно широкий, и, как предлагает klickverbot, было бы лучше, если бы вы потратили немного времени на понимание основных концепций ООП.

Существует множество ресурсов, которые помогут вам начать работу с AS3, проверьте это, например, http://tv.adobe.com/watch/colin-moocks-lost-actionscript-weekend/course-1-introduction

Учебное пособие Колина Мука очень простое и даст вам большинство инструментов, которые вынужно начать.

0 голосов
/ 28 августа 2010

Если вы новичок в AS3 и, в частности, в ООП, вы должны проверить Moock's Essential Actionscript 3 , что невероятно для пошагового обучения в ООП в AS3.

HouseObjects представляется классом, и вы создаете новый его экземпляр для переменной comp

У вас есть повторяющееся определение.Похоже, что вы пытаетесь использовать Flash Pro для расширения HouseObjects для lightbulb.Это не работает так во Flash Pro.Вы создаете символ MovieClip и даете ему определение класса.Он должен расширять MovieClip, и вы не можете изменить это в этом случае.Скорее всего, вы могли бы расширить HouseObjects в файле AS3 и использовать его в своем приложении.

Лично я думаю, что если вы хотите действительно , чтобы получить представление об ООП с AS3, вы должны получитькнигу и убирайся из Flash Pro.Используйте IDE, например Flash Builder, FDT, Flash Develop или IntelliJ IDEA.Гораздо проще понять, когда вы уходите от диалогов и других сложностей IDE Flash Pro:>

0 голосов
/ 28 августа 2010

Я не совсем уверен, правильно ли я понял ваш вопрос.comp = new HouseObjects создает новый экземпляр (объект) типа HouseObjects.(Небольшое исследование основ ООП, вероятно, облегчит вам жизнь.)

Относительно ошибки «Пожалуйста, введите уникальное имя класса«: вы не можете назначить один и тот же класс двум символам библиотеки, потому что символ подключенвнутри класса, чтобы при создании нового экземпляра (var x = new HouseObjects; addChild(x);) содержимое связанного символа также добавлялось в список отображения.Если бы к одному и тому же классу было привязано несколько символов библиотеки, как бы компилятор Flash узнал, какой из них выбрать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...