![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Нужно в один объект добавить другой из отдельного класса. Код упростил максимально как мог. Делаю так:
Основной класс: package { import flash.display.Sprite; import Resizer; public class Main extends Sprite { var elast:Resizer=new Resizer(); public var obj1:Obj=new Obj(0x0000ff); public var obj2:Obj=new Obj(0xff0000); public function Main():void { addChild(elast); obj1.x=obj1.y=10; obj1.width=obj1.height=200; elast.addEl(obj1,this); obj2.x=obj2.y=15; obj2.width=obj2.height=30; elast.addEl(obj2,obj1); } } } package { import flash.display.Sprite; import flash.display.DisplayObject; public class Resizer extends Sprite { private var buferObj:Sprite=new Sprite();//переменная для приведения типов public function Resizer():void { } public function addEl(_obj:DisplayObject,_targ:DisplayObject=null):void { buferObj=_targ as Sprite; buferObj.addChild(_obj); trace(_obj,_obj.name,_targ,_targ.name); } } } И класс объекта, ничего особенного package { import flash.display.Sprite; import flash.display.Shape; public class Obj extends Sprite { public function Obj(_col:uint):void { var fig:Shape=new Shape(); addChild(fig); fig.graphics.beginFill(_col); fig.graphics.drawRect(0,0,1,1); fig.graphics.endFill(); } } } Заранее спасибо всем откликнувшимся.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 117
|
Хаха) Вообще то все добавляется и создается, только есть одно но - позиция у второго символа будет x = obj1.x + obj1.width*obj2.x (по y аналогично), т.е в данном случае x = y = 10 + 200*15. Потому что меняя width или height, меняется и scaleX и scaleY. В данном случает стоит переопределить эти сеттеры и будет все круто))
Obj.as: package { import flash.display.Sprite; import flash.display.Shape; public class Obj extends Sprite { public function Obj( _col:uint=0x000000 ):void { super(); i_color = _col; fig = new Shape(); addChild(fig); reDraw(); } protected var fig :Shape; protected var f_width :Number = 1.0; protected var f_height :Number = 1.0; protected var i_color :uint; override public function set width( value:Number ):void { f_width = value; reDraw(); } override public function set height( value:Number ):void { f_height = value; reDraw(); } public function reDraw():void { fig.graphics.clear(); fig.graphics.beginFill( i_color ); fig.graphics.drawRect( 0, 0, f_width, f_height ); fig.graphics.endFill(); } } } |
|
|||||
|
Интересно откуда такая формула. Логики вроде никакой.
Надо будет помозговать, что б постараться обойтись без перерисовки... И можно ли "обнулить" масштаб, т.е. что б не изменяя реальных размеров, масштаб составлял 100%. Добавлено через 17 часов 55 минут Кажется я понял. Без перерисовки в том виде, который я описываю сделать не получится. При этом при добавлении нового объекта к уже масштабированному его пропорции будут также масштабированы. Надо поиграться с формулами и свойствами...
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! Последний раз редактировалось TanaTiX; 19.12.2009 в 17:29. |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:17. |
|
|
« Предыдущая тема | Следующая тема » |
|
|