Métodos/classes de amigos para aulas de pacote AS3
-
18-09-2019 - |
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 ++.
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.
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();