Может мне кто-то пояснить что я делаю неправильно? Или я наткнулся на очередной баг флеша?
как обычно, для наглядности приведу код:

Код 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() метод).