Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.08.2010, 17:36
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 1  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
По умолчанию Как помимо интерфейса потребовать расширения опред. класса?

Т.е. есть интерфейс IMyInterface, как мне потребовать, чтобы класс, его реализующий, обязательно расширял бы при этом Sprite или являлся DisplayObject-ом?
__________________
скриптограф

Старый 27.08.2010, 17:49
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 2  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Попробуйте через наследование интерфейса:
Код AS3:
public interface IMyInterface extends IBitmapDrawable {
 
//...
 
}
__________________
...вселенская грусть

Старый 27.08.2010, 17:55
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 3  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
Ага, спасибо! Я тупой - специально же лазил смотреть, что они реализуют, но глаза разуть забыл))) Спасибо!))
__________________
скриптограф

Старый 27.08.2010, 17:59
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 4  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
IBitmapDrawable ? а какие у него методы?
нет никаких - просто сигнальный интерфейс.
Хотелось бы иметь IDisplayObjectContainer с addChild итп..
или IDisplayObject с x,y,width.
Пока выход кастовать всегда к этим классам если нужно достучаться до этих свойств а не к общим интерфейсам - недоработка однако.
__________________
Отряд Котовскага

Старый 27.08.2010, 17:59
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 5  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Ну, тут есть один косяк - ваш объект запросто сможет быть BitmapData. Так что не идеальное решение, но проще вряд ли получится

ЗЫ
@Котяра
все необходимые методы можно указать в IMyInterface
__________________
...вселенская грусть

Старый 27.08.2010, 18:05
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 6  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
все необходимые методы можно указать в IMyInterface
Это не выход, а если мне нужен будет либо спрайт, либо мой объект с addChild?
спрайт не реализует IMyInterface
__________________
Отряд Котовскага

Старый 27.08.2010, 18:19
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 7  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
спрайт не реализует IMyInterface
Согласен, тогда лучше кастовать в более широкий тип
__________________
...вселенская грусть

Старый 27.08.2010, 18:46
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 8  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Это опять же не выход..
возьмём реальный пример.
реализую систему событий со всплытиями.
хранителями могут быть как спрайты так и объекты типа DataHolder.
и у того и у того должен быть геттер parent и события addChild.
сейчас это реализовать никак нельзя только через
Код AS3:
if (obj is Sprite)
(obj as Sprite).addChild(child as DisplayObject);
 
if (obj is DataHolder)
(obj as DataHolder).addChild(child as DataHolder);
 
//вместо
(obj as IDiplayObjectContainer).addChild(child  as IDiplayObjectContainer)
__________________
Отряд Котовскага

Старый 02.09.2010, 15:07
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 9  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
У меня сейчас случился разрыв шаблона. Я нечаянно узнал, что можно сделать так:

Код AS3:
package  
{
 
	import flash.display.Sprite;
 
	public interface INewInterface extends Sprite
	{
		function hello ( ):void;
	}
 
}
В Муке такого не было, что интерфейс может являться расширением не интерфейса, а конкретного класса.

В общем, если после этого в FD создать класс, назначить его расширением, например, Shape-а, потребовать реализовать INewInterface и поставить галку генерирования методов интерфейсной реализации, то он выдаст вот такую хрень - в общем я в легком шоке и пытаюсь осмыслить, что происходит)))

Код AS3:
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
		{
 
		}
 
	}
 
}
__________________
скриптограф

Старый 02.09.2010, 15:30
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 10  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Это интересно, но всё равно ведь Shape не будет расширять IMyInterface..
Или можно будет использовать Shape в качестве общего класса/интерфейса?
Надо будет потестить.
__________________
Отряд Котовскага

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:56.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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