Como getDefinitionByName de uma classe sem pacotes em AS3?
-
05-07-2019 - |
Pergunta
Digamos que você tenha um teste FlexUnit parecida com esta:
package foo {
import flexunit.framework.TestCase;
import flash.utils.getDefinitionByName;
import flash.utils.getQualifiedSuperclassName;
class DescribeTypeTest {
public function testDescribeInnerType():void {
var currentInstance:ChildBar = new ChildBar();
trace(getDefinitionByName(getQualifiedSuperclassName(currentInstance)));
}
}
}
class Bar{}
class ChildBar extends Bar{}
O que lança a exceção "Erro # 1065: Variable Bar não está definido." Ele só se aplica a classes internas (classes fora do pacote).
Alguém tem alguma maneira de chegar a este trabalho?
Solução
Não tenho certeza se existe alguma solução alternativa, mas apenas para confirmar:
getDefinitionByName () função
função pública getDefinitionByName (name: String): Object Versão da linguagem: ActionScript 3.0 Versões de tempo de execução: AIR 1.0, Flash Player 9 Retorna uma referência para o objeto classe da classe especificada pela o parâmetro de nome.Parâmetros
name: String - O nome de uma classe. Retorna Object - Retorna uma referência para o objecto de classe da classe especificada pelo parâmetro de nome.
Lança ReferenceError - No pública definição existe com o especificado nome.
Uma vez que tanto Bar e ChildBar são não-público, você está recebendo esse ReferenceError.
Outras dicas
Eu apenas testada seguinte código com o Flex 3.3 (app AIR):
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="t();">
<mx:Script>
<![CDATA[
import flash.utils.describeType;
import flash.utils.getQualifiedSuperclassName;
private function t():void {
trace(getDefinitionByName(getQualifiedSuperclassName(new FooBar())));
}
]]>
</mx:Script>
</mx:WindowedApplication>
Bar.as
package
{
public class Bar
{
}
}
FooBar.as
package
{
public class FooBar extends Bar
{
public function FooBar()
{
super();
}
}
}
Como resultado traço eu ver:
[SWF] DefTest.swf - 1,024,228 bytes after decompression
[class Bar]
Você pode confirmar isso? Será que isso ajuda?