PDA

Просмотр полной версии : Параметры MovieClip из конструктора?


aassaaa
09.03.2010, 09:36
Столкнулся с новой не понятной для меня ситуацией.
Значит общая цель у меня - создать MovieClip не привязанный к какому-либо графическому обьекту и самостоятельно с помощу flash.display.Graphics нарисовать там окружность нужного диаметра. Но до рисования окружности столкнулся с тем, что не могу настроить размер клипа!

Написал главный класс:
package {
import flash.display.MovieClip;
import Ball;

public class Main extends MovieClip {

public function Main () {

var ball:Ball = new Ball();

ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
addChild(ball);

}


}
}

а за ним и Ball (напомню что для него нет в библиотеке граф. обьекта)
package
{
import flash.display.Graphics;
import flash.display.MovieClip;

public class Ball extends MovieClip
{
public var r:Number;

public var g:Graphics = graphics;

public function Ball (r:Number = 50) {
this.r = r;
this.width = this.height = r;

trace('r=',this.r,'width=',this.width,'height=',height);

}

}

}

Output: r= 50 width= 0 height= 0
Но почему width и height все еще нули? Обьясните пожалуйста, а то в спешке купил книгу (http://www.ozon.ru/context/detail/id/4839446/) и в ней как-то очень мало информации, а за активно здесь продвигаемым Муком пока выйти возможности нет..

iNils
09.03.2010, 10:03
Размер клипа, это размер его содержимого. А ваш клип пустой, поэтому вы пытаетесь задать размер пустоте.

aassaaa
09.03.2010, 10:22
ну хорошо. на самом деле я пытался нарисовать окружность и конструктор у меня выглядел след. образом:
public function Ball (r:Number = 50) {

this.r = r;
this.width = this.height = r;

//trace('r=',this.r,'width=',this.width,'height=',height);

g.lineStyle(6, 0x0000FF, .5);
g.beginFill(0x0000FF, .8);
g.drawCircle(r, r, r);
g.endFill();

}

вот только ничего не нарисовалось

Добавлено через 3 минуты
А все понял. сначала рисуем -потом ставим размер)

public class Ball extends MovieClip
{
public var r:Number;
public var _parent:Ball;

public var g:Graphics = graphics;

public function Ball (r:Number = 50) {

this.r = r;

//trace('r=',this.r,'width=',this.width,'height=',height);

g.lineStyle(6, 0x0000FF, .5);
g.beginFill(0x0000FF, .8);
g.drawCircle(r, r, r);
g.endFill();

this.width = this.height = r;

}

}

Спасибо

Добавлено через 6 минут
А как сделать чтобы в этом случае точка this.x;this.y отвечала не верхней-левой точке, а центральной?

iNils
09.03.2010, 10:51
g.drawCircle(0, 0, r);