|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2013
Сообщений: 290
|
Разборка Мука: Видимость переменной.
Всем привет.
Разбираю один из примеров Мука, связанный с текстовыми эффектами. Немного переработал пример так, чтобы он был более универсальным. Документ Класс выглядит так: package { import flash.display.*; import flash.text.*; public class TextTo300_demo extends Sprite { public function TextTo300_demo() { private var t:TextTo300_Timer; //Method1: Switch one of this method t = new TextTo300_Timer( ); // private var t:TextTo300_Frame; //Method2: Switch one of this method // t = new TextTo300_Frame(); t.text = "Hello"; t.autoSize = TextFieldAutoSize.LEFT; addChild(t); // Start the animation t.start( ); } } } Первый, TextTo300_Frame, основан на событии ENTER_FRAME: package { import flash.display.*; import flash.events.*; import flash.text.*; public class TextTo300_Frame extends TextField { public function TextTo300_Frame( ) { } public function moveTextRight (e:Event):void { if (x <= 300) { x += 10; if (x > 300) { x = 300; } } else { stop( ); } } public function start ( ):void { // Start playing the animation addEventListener(Event.ENTER_FRAME, moveTextRight); } public function stop ( ):void { // Pause the animation removeEventListener(Event.ENTER_FRAME, moveTextRight); } } } package { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.text.*; public class TextTo300_Timer extends TextField { private var timer:Timer; public function TextTo300_Timer() { timer = new Timer(50, 0); timer.addEventListener(TimerEvent.TIMER, moveTextRight); } public function moveTextRight (e:Event):void { if (x <= 300) { x += 10; if (x > 300) { x = 300; } } else { stop( ); } } public function start ( ):void { // Start playing the animation timer.start( ); } public function stop ( ):void { // Pause the animation timer.stop( ); } } } И вот, когда я запускаю проект с одним из этих методов (второй закоментарен), то получается такая ошибка: Цитата:
И вот тут возникают два вопроса: 1. Что не так? Какие-такие декларации уровня свойства класса? 2. Если изменить тип переменной на public или internal, то тоже выдается ошибка... Но если ПРОСТО ТУПО УБРАТЬ тип видимости переменной (или как там правильно называть определители public, private?), то код работает ОК : ) Здесь непонятно, а какой же тип тогда у переменной, когда ничего не указано? |
|
|||||
Атрибут private не может быть использован в методах класса.
Замените: ... public class TextTo300_demo extends Sprite { public function TextTo300_demo() { private var t:TextTo300_Timer; //Method1: Switch one of this method t = new TextTo300_Timer( ); ... 2. Переменные, объявленные в методах, будут видны только в них. В методах не надо писать private/public/protected/internal. Эти атрибуты используются при объявлении переменных уровня класса. |
|
|||||
Регистрация: Mar 2013
Сообщений: 290
|
TWETTI, всё получилось спасибо.
Вот, только щас дошло, что такое class property definitions, эхе-хе. |
|
|||||
Регистрация: May 2010
Сообщений: 543
|
В описании ошибки написано же все.
Модификатор доступа (private, public, .. etc) можно вешать только на свойство класса, а не на локальную переменную метода. То есть, внутри метода/функции просто пишем а для свойства класса Update: что-то я опоздал с ответом
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с) |
|
|||||
Регистрация: Mar 2013
Сообщений: 290
|
carrotoff, ничего страшного. "Упрощай, Повторяй" (с), лол.
|
Часовой пояс GMT +4, время: 13:03. |
|
« Предыдущая тема | Следующая тема » |
Теги |
namespace , scope , видимость , класс , переменные |
|
|