| Огнеметчик |
08.05.2009 02:40 |
Помогите разобраться с классами ООП
Есть рабочий код, который рисует квадрат:
Код AS3:
package {
import flash.display.*;
public class test extends Sprite
{
public function test()
{
init();
}
private function init():void {
trace("init");
var test: Shape = draw();
test.x = 200;
test.y = 200;
addChild(test);
}
private function draw(): Shape {
var rect:Shape = new Shape();
rect.graphics.lineStyle(1, 0x000000);
rect.graphics.beginFill(0xCCCCCC);
rect.graphics.drawRect(0, 0, 20, 20);
rect.graphics.endFill();
return rect;
}
}
}
Думаю, тут все понятно, функция draw() рисует квадрат, функция init() создает объект типа Shape, в котором рисуется квадрат, задает координаты объекта и выводит его в список отображения. Далее в конструкторе вызывается init() и квадрат появляется на экране.
Хочу функцию рисования квадрата вынести в отдельный класс. Вероятно я чего-то не так делаю, потому что приведенный далее код не работает.
Основной файл проекта содержит код:
Код AS3:
package {
import classes.MyClass;
import flash.display.*;
public class test extends Sprite
{
public function test()
{
init();
}
private function init():void {
trace("init");
var test: Shape = new MyClass();
test.x = 200;
test.y = 200;
addChild(test);
}
}
}
Файл classes/myclass.as содержит код:
Код AS3:
package classes
{
import flash.display.*;
public class MyClass extends Shape
{
public function MyClass()
{
draw();
}
private function draw(): Shape {
var rect:Shape = new Shape();
rect.graphics.lineStyle(1, 0x000000);
rect.graphics.beginFill(0xCCCCCC);
rect.graphics.drawRect(0, 0, 20, 20);
rect.graphics.endFill();
return rect;
}
}
}
То есть, по моему пониманию, когда я в основном файле проекта создаю объект класса MyClass:
Код AS3:
var test: Shape = new MyClass();
вызывается конструктор класса MyClass, в свою очередь в этом конструкторе вызывается функция draw(), которая возвращает объект типа Shape, который, по моему пониманию, после вызова
должен появиться на экране, но не появляется. Что делаю неправильно?
|