![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
Т.е. есть интерфейс IMyInterface, как мне потребовать, чтобы класс, его реализующий, обязательно расширял бы при этом Sprite или являлся DisplayObject-ом?
__________________
скриптограф |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
Ага, спасибо! Я тупой - специально же лазил смотреть, что они реализуют, но глаза разуть забыл))) Спасибо!))
__________________
скриптограф |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
IBitmapDrawable ? а какие у него методы?
нет никаких - просто сигнальный интерфейс. Хотелось бы иметь IDisplayObjectContainer с addChild итп.. или IDisplayObject с x,y,width. Пока выход кастовать всегда к этим классам если нужно достучаться до этих свойств а не к общим интерфейсам - недоработка однако.
__________________
Отряд Котовскага |
|
|||||
|
Ну, тут есть один косяк - ваш объект запросто сможет быть BitmapData. Так что не идеальное решение, но проще вряд ли получится
ЗЫ @Котяра все необходимые методы можно указать в IMyInterface
__________________
...вселенская грусть |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Это не выход, а если мне нужен будет либо спрайт, либо мой объект с addChild?
спрайт не реализует IMyInterface
__________________
Отряд Котовскага |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Это опять же не выход..
возьмём реальный пример. реализую систему событий со всплытиями. хранителями могут быть как спрайты так и объекты типа DataHolder. и у того и у того должен быть геттер parent и события addChild. сейчас это реализовать никак нельзя только через
__________________
Отряд Котовскага |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
У меня сейчас случился разрыв шаблона. Я нечаянно узнал, что можно сделать так:
package { import flash.display.Sprite; public interface INewInterface extends Sprite { function hello ( ):void; } } В общем, если после этого в FD создать класс, назначить его расширением, например, Shape-а, потребовать реализовать INewInterface и поставить галку генерирования методов интерфейсной реализации, то он выдаст вот такую хрень - в общем я в легком шоке и пытаюсь осмыслить, что происходит))) package { import flash.events.Event; import flash.display.Stage; import flash.display.LoaderInfo; import flash.geom.Transform; import flash.geom.Vector3D; import flash.display.DisplayObjectContainer; import flash.display.Shader; import flash.accessibility.AccessibilityProperties; import flash.ui.ContextMenu; import flash.accessibility.AccessibilityImplementation; import flash.geom.Point; import flash.text.TextSnapshot; import flash.geom.Rectangle; import flash.display.Graphics; import flash.display.Sprite; import flash.media.SoundTransform; import flash.display.DisplayObject; import flash.display.Shape; public class InterfaceTest extends Shape implements NewInterface { public function InterfaceTest() { super(); } /* INTERFACE NewInterface */ public function hello():void { } public function get dropTarget():DisplayObject { } public function get soundTransform():SoundTransform { } public function get hitArea():Sprite { } public function set buttonMode(value:Boolean):void { } public function get graphics():Graphics { } public function get useHandCursor():Boolean { } public function set hitArea(value:Sprite):void { } public function get buttonMode():Boolean { } public function stopDrag():void { } public function set useHandCursor(value:Boolean):void { } public function set soundTransform(sndTransform:SoundTransform):void { } public function startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void { } public function get mouseChildren():Boolean { } public function get numChildren():int { } public function contains(child:DisplayObject):Boolean { } public function swapChildrenAt(index1:int, index2:int):void { } public function getChildByName(name:String):DisplayObject { } public function removeChildAt(index:int):DisplayObject { } public function getChildIndex(child:DisplayObject):int { } public function addChildAt(child:DisplayObject, index:int):DisplayObject { } public function set tabChildren(enable:Boolean):void { } public function get textSnapshot():TextSnapshot { } public function swapChildren(child1:DisplayObject, child2:DisplayObject):void { } public function get tabChildren():Boolean { } public function getObjectsUnderPoint(point:Point):Array { } public function set mouseChildren(enable:Boolean):void { } public function removeChild(child:DisplayObject):DisplayObject { } public function getChildAt(index:int):DisplayObject { } public function addChild(child:DisplayObject):DisplayObject { } public function areInaccessibleObjectsUnderPoint(point:Point):Boolean { } public function setChildIndex(child:DisplayObject, index:int):void { } public function get accessibilityImplementation():AccessibilityImplementation { } public function get focusRect():Object { } public function set focusRect(focusRect:Object):void { } public function get doubleClickEnabled():Boolean { } public function set contextMenu(cm:ContextMenu):void { } public function get tabEnabled():Boolean { } public function get contextMenu():ContextMenu { } public function set accessibilityImplementation(value:AccessibilityImplementation):void { } public function set doubleClickEnabled(enabled:Boolean):void { } public function set mouseEnabled(enabled:Boolean):void { } public function set tabIndex(index:int):void { } public function get mouseEnabled():Boolean { } public function get tabIndex():int { } public function set tabEnabled(enabled:Boolean):void { } public function get visible():Boolean { } public function get rotation():Number { } public function localToGlobal(point:Point):Point { } public function get name():String { } public function set width(value:Number):void { } public function globalToLocal(point:Point):Point { } public function get blendMode():String { } public function get scale9Grid():Rectangle { } public function set name(value:String):void { } public function get rotationX():Number { } public function get rotationY():Number { } public function set scaleX(value:Number):void { } public function set scaleY(value:Number):void { } public function set scaleZ(value:Number):void { } public function get accessibilityProperties():AccessibilityProperties { } public function set scrollRect(value:Rectangle):void { } public function get rotationZ():Number { } public function get height():Number { } public function set blendMode(value:String):void { } public function set scale9Grid(innerRectangle:Rectangle):void { } public function getBounds(targetCoordinateSpace:DisplayObject):Rectangle { } public function set blendShader(value:Shader):void { } public function get opaqueBackground():Object { } public function get parent():DisplayObjectContainer { } public function get cacheAsBitmap():Boolean { } public function set rotationX(value:Number):void { } public function set rotationY(value:Number):void { } public function set rotationZ(value:Number):void { } public function local3DToGlobal(point3d:Vector3D):Point { } public function set alpha(value:Number):void { } public function globalToLocal3D(point:Point):Vector3D { } public function set accessibilityProperties(value:AccessibilityProperties):void { } public function get width():Number { } public function hitTestPoint(x:Number, y:Number, shapeFlag:Boolean = false):Boolean { } public function set cacheAsBitmap(value:Boolean):void { } public function get scaleX():Number { } public function get scaleY():Number { } public function get scaleZ():Number { } public function get scrollRect():Rectangle { } public function get mouseX():Number { } public function get mouseY():Number { } public function set height(value:Number):void { } public function set mask(value:DisplayObject):void { } public function getRect(targetCoordinateSpace:DisplayObject):Rectangle { } public function get alpha():Number { } public function set transform(value:Transform):void { } public function get loaderInfo():LoaderInfo { } public function get root():DisplayObject { } public function set visible(value:Boolean):void { } public function set opaqueBackground(value:Object):void { } public function hitTestObject(obj:DisplayObject):Boolean { } public function get mask():DisplayObject { } public function set x(value:Number):void { } public function set y(value:Number):void { } public function get transform():Transform { } public function set z(value:Number):void { } public function set filters(value:Array):void { } public function get x():Number { } public function get y():Number { } public function get z():Number { } public function get filters():Array { } public function set rotation(value:Number):void { } public function get stage():Stage { } public function dispatchEvent(event:Event):Boolean { } public function willTrigger(type:String):Boolean { } public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void { } public function toString():String { } public function hasEventListener(type:String):Boolean { } public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void { } } }
__________________
скриптограф |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Это интересно, но всё равно ведь Shape не будет расширять IMyInterface..
Или можно будет использовать Shape в качестве общего класса/интерфейса? Надо будет потестить.
__________________
Отряд Котовскага |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:56. |
|
|
« Предыдущая тема | Следующая тема » |
|
|