2013-12-02 5 views
0

Вот мой код:Actionscript доступ глобальная/переменная класса

package 
{ 
import flash.display.Sprite; 

public class MyClass extends Sprite 
{ 
    private var abc:String = "123"; 
    public function MyClass() 
    { 

    } 

    public function myfunc():void 
    { 
     dispatch("456"); 
    } 

    private function dispatch(abc:String):void 
    { 
     trace(abc); 
    } 
} 
} 

Когда называют myfunc() функции след вернется 456. Как я могу получить доступ к глобальной переменной?

спасибо.

+0

Прежде всего, почему вы используете одно и то же имя для переменной аргумента и глобальной переменной? –

ответ

1

Прежде всего, private var abc:String = "123"; не глобальная переменная. Это частная переменная члена класса. Это полный класс. Когда вы добавляете параметр в метод-член с тем же именем, этот параметр имеет локальную область в этом методе и что переменная локального параметра скрывает член класса с тем же именем.

private function dispatch(abc:String):void { 
    // here abc has local scope and it hides the class member abc 
} 

У вас есть два варианта решения этого:

  1. Просто используйте другое имя параметра. Например, private function dispatch(ab:String):void. Теперь ab является локальной переменной, abc является переменной-членом класса.
  2. Если вы должны использовать одно и то же имя для параметра, используйте this.abc для доступа к члену класса.
Смежные вопросы