Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблемы с имплементацией (http://www.flasher.ru/forum/showthread.php?t=157096)

alatar 31.05.2011 17:43

Цитата:

Сообщение от in4core (Сообщение 1000098)
Не буду же я все методы спрайтовские заново переписывать. этож глупо

А в что глупого в написании интерфейса со всеми (хотя смысл описывать все методы?) методами?

etc 31.05.2011 17:43

Напиши интерфейс IDisplayObject, имплементи оба.

gloomyBrain 31.05.2011 18:24

ыыы... большой получился =)
Код AS3:

package {
 
        import flash.accessibility.AccessibilityProperties
        import flash.display.DisplayObject;
        import flash.display.DisplayObjectContainer;
        import flash.display.IBitmapDrawable;
        import flash.display.LoaderInfo;
        import flash.display.Stage;
        import flash.events.IEventDispatcher;
        import flash.geom.Point;
        import flash.geom.Rectangle;
        import flash.geom.Transform;
        import flash.geom.Vector3D;
        import flash.events.Event;
 
        [Event(name = "added", type = "flash.events.Event")]
        [Event(name = "addedToStage", type = "flash.events.Event")]
        [Event(name = "enterFrame", type = "flash.events.Event")]
        [Event(name = "exitFrame", type = "flash.events.Event")]
        [Event(name = "frameConstructed", type = "flash.events.Event")]
        [Event(name = "removed", type = "flash.events.Event")]
        [Event(name = "removedFromStage", type = "flash.events.Event")]
        [Event(name = "render", type = "flash.events.Event")]
 
        /**
        * Интерфейс объекта отображения
        *
        * @author gloomyBrain
        */

        public interface IDisplayObject extends IEventDispatcher, IBitmapDrawable {
 
        function get accessibilityProperties():AccessibilityProperties;
        function set accessibilityProperties(accessibilityProperties:AccessibilityProperties):void;
 
        function get alpha():Number;
        function set alpha(alpha:Number):void;
 
        function get blendMode():String;
        function set blendMode(blendMode:String):void;
 
        function get cacheAsBitmap():Boolean;
 
        function set cacheAsBitmap(cacheAsBitmap:Boolean):void;
 
        function get filters():Array;
        function set filters(filters:Array):void;
 
        function get height():Number;
        function set height(height:Number):void;
 
        function get loaderInfo():LoaderInfo;
 
        function get mask():DisplayObject;
        function set mask(mask:DisplayObject):void;
 
        function get mouseX():Number;
        function get mouseY():Number;
 
        function get name():String;
        function set name(name:String):void;
 
        function get opaqueBackground():Object;
        function set opaqueBackground(opaqueBackground:Object):void;
 
        function get parent():DisplayObjectContainer;
 
        function get root():DisplayObject;
 
        function get rotation():Number;
        function set rotation(rotation:Number):void;
 
                function get rotationX():Number;
        function set rotationX(rotation:Number):void;
 
                function get rotationY():Number;
        function set rotationY(rotation:Number):void;
 
                function get rotationZ():Number;
        function set rotationZ(rotation:Number):void;
 
        function get scale9Grid():Rectangle;
        function set scale9Grid(scale9Grid:Rectangle):void;
 
        function get scaleX():Number;
        function set scaleX(scaleX:Number):void;
 
        function get scaleY():Number;
        function set scaleY(scaleY:Number):void;
 
                function get scaleZ():Number;
        function set scaleZ(scaleZ:Number):void;
 
        function get scrollRect():Rectangle;
        function set scrollRect(scrollRect:Rectangle):void;
 
        function get stage():Stage;
 
        function get transform():Transform;
        function set transform(transform:Transform):void;
 
        function get visible():Boolean;
        function set visible(visible:Boolean):void;
 
        function get width():Number;
        function set width(width:Number):void;
 
        function get x():Number;
        function set x(x:Number):void;
 
        function get y():Number;
        function set y(y:Number):void;
 
                function get z():Number;
        function set z(z:Number):void;
 
        function getBounds(targetCoordinateSpace:DisplayObject):Rectangle;
 
        function getRect(targetCoordinateSpace:DisplayObject):Rectangle;
 
        function globalToLocal(point:Point):Point;
 
        function globalToLocal3D(point:Point):Vector3D;
 
        function hitTestObject(obj:DisplayObject):Boolean;
 
        function hitTestPoint(x:Number, y:Number, shapeFlag:Boolean = false):Boolean;
 
        function local3DToGlobal(point3d:Vector3D):Point;
 
        function localToGlobal(point:Point):Point;
 
        }
 
}


-De- 31.05.2011 18:36

Цитата:

Сообщение от in4core (Сообщение 1000098)
нужно чтобы все методы работали от спрайта + мои личные от интерфейса.

Код AS3:

var a:Test = new Test();

Кэп продолжает)

in4core 31.05.2011 18:40

нет кеп не продолжает. ))) Совсем не в тему )) Хотя понятно что работать будет, тока мне нужна имплементация полюбе

Добавлено через 37 секунд
gloomyBrain ты опасен!!! Есть какой то секрет как ты так быстро их все накидал? или ручками ручками?

i.o. 31.05.2011 18:48

Цитата:

Есть какой то секрет как ты так быстро их все накидал? или ручками ручками?
не понял проблемы что-то)

Wolsh 31.05.2011 18:58

Открываешь Модель класса в ФД (F4) и – вот тебе готовый интерфейс.
Но тут, согласен с Кэпом)) – сам подход неверен. Рекомендую перечитать основы про типы данных.
Речь то – о Типе переменной. Тип переменной ITest предполагает наличие у нее одного единственного метода. Делаете ДВЕ переменных, типа Спрайт (или Тест) и типа ITest, и используете их по ситуации – ссылка-то на один и тот же объект, только представленный кастингом как разные типы данных. От того, что Вы будете имплементить два Интерфейса, легче то не станет – переменную придется также кастовать, а значит всегда, когда Вы захотите добавить к ДО какую-то имплементацию одного единственного метода, Вам придется именно добавлять его к Интерфейсу IDisplayObject. Это ж никуда не годится. Смысл Интерфейса не только в гарантии наличия метода, но и в сокрытии ненужных.

i.o. 31.05.2011 19:04

Цитата:

тока мне нужна имплементация полюбе
а зачем, кстати?

-De- 31.05.2011 19:07

Цитата:

Сообщение от in4core (Сообщение 1000135)
нет кеп не продолжает. ))) Совсем не в тему )) Хотя понятно что работать будет, тока мне нужна имплементация полюбе

Test имплементирует и методы спрайта и интерфейс! Описания, что же надо - не в тему =\

PS: Кстати, меня вот бесит, что спрайт не унаследован от шейпа, потому без геморроя менять спрайт на шейп (когда нужно дёргать graphics) - низя =(

КорДум 31.05.2011 20:06

Цитата:

PS: Кстати, меня вот бесит, что спрайт не унаследован от шейпа, потому без геморроя менять спрайт на шейп (когда нужно дёргать graphics) - низя =(
Это вы о чем?


Часовой пояс GMT +4, время: 21:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.