Показать сообщение отдельно
Старый 04.08.2013, 17:36
searinox вне форума Посмотреть профиль Отправить личное сообщение для searinox Найти все сообщения от searinox
  № 1  
Ответить с цитированием
searinox

Регистрация: May 2011
Сообщений: 76
По умолчанию еще один баг...

Может мне кто-то пояснить что я делаю неправильно? Или я наткнулся на очередной баг флеша?
как обычно, для наглядности приведу код:
Код AS3:
package test
{
    public class SendMessage
    {
        public static const TITLE_ID:uint = 2;
    }
}
 
package test
{
    public class ForwardMessage
    {
        public static const TITLE_ID:uint = 7;
    }
}
 
package test
{
    public class MessageController
    {
		private var messageClass:Class;
 
        public function init(messageType:Class):void
        {
			messageClass = messageType;
        }
 
		//Не работает. titleId всегда 0.
		public function getTitleId():uint
		{
			var titleId:uint = messageClass.TITLE_ID;
			return titleId;
		}
 
 
		// Тоже не работает(Ни одно из условий не удовлетворяется), догадываюсь почему, нохотелось бы услышать правильный ответ.
		public function getTitleId1():uint
		{
			var titleId:uint = 666;
			if(messageClass is SendMessage)
			{
				titleId = SendMessage.TITLE_ID;
			}
			else if(messageClass is ForwardMessage)
			{
				titleId = ForwardMessage.TITLE_ID;
			}
			return titleId;
		}
 
		//Работает.
		public function getTitleId2():uint
		{
			var titleId:uint = 666;
			if(messageClass == SendMessage)
			{
				titleId = SendMessage.TITLE_ID;
			}
			else if(messageClass == ForwardMessage)
			{
				titleId = ForwardMessage.TITLE_ID;
			}
			return titleId;
		}
 
    }
}
 
package test
{
    import test.SendMessage;
    import test.ForwardMessage;
 
    public class Main
    {
 
 
        public function Main()
        {
			var control:MessageController = new MessageController();
			control.init(SendMessage);
			trace(control.getTitleId());  // 0
			trace(control.getTitleId1()); // 666
			trace(control.getTitleId2()); // 2
			control.init(WriteMessage);
			trace(control.getTitleId());  // 0
			trace(control.getTitleId1()); // 666
			trace(control.getTitleId2()); // 7
        }
    }
}
Вопрос, как написать правильно что бы не нужно было использовать ифы(работал getTitleId() метод).