Pergunta

Olá, estou me perguntando se posso ter uma classe AS3 Packageless () chamar um método privado na classe principal no arquivo. Por exemplo:

package demo
{
    public class MyDemoClass
    {
        var helper:FriendlyHelperClass = new FriendlyHelperClass(this)
    }

    private function methodToCall():void
    {
        ...
    }
}

public class FriendlyHelperClass
{
    public function FriendlyHelperClass(demo:MyDemoClass)
    {
        demo.methodToCall()
    }
}

A chamada para MethodTocall () da FriendlyHelPlass falhará, pois é um membro privado do MyDemoclass. Existe alguma maneira de chamar o método MethodTocall () do FriendlyHelPlass sem estender o MyDemoclass.

Basicamente, estou procurando funcionalidade de classe interna que o Java tenha ou algum tipo de aula de amigos no estilo C ++.

Foi útil?

Solução

Resposta curta: Não.

Você nunca pode acessar um membro privado de fora de uma classe no ActionScript. O que você poderia fazer é usar um espaço para nome em vez de um escopo privado. Isso permitiria dar acesso a alguns membros a classes selecionadas. Esta é a aula mais próxima de uma amiga em que você entrará no AS3.

Outras dicas

Receio que isso não seja possível, mas se você tornar a classe dinâmica, poderá editá -la enquanto o programa estiver em execução e, possivelmente, adicionar algumas funções úteis a ele, para acessar as funções privadas. Eu não tentei embora.

Classes dinâmicas

Sem testar o código e saber qual é o seu problema completo. Você pode tentar passar as funções necessárias para a classe incorporada como retorno de chamada. por exemplo,

helper.methodToCallCallback = this.methodToCall;

Em seguida, dentro de amigashelperclass:

this.methodToCallCallback();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top