21
авг
  Некоторые тонкости обращения к созданным визуально объктам на сцене в Adobe Flash CS5   0 баллов
 

В общем проблема такого плана. Решил освоить ООП, т.к. даже при создании простеньких интерфейсов начинаешь тонуть в коде, когда пишешь его покадрово. Столкнулся с тем, что из кода классов не всегда удается обращаться к объектам созданным вручную и именованных на закладке "Свойства". Вот пример из Мука - класс формы авторизации. Создал символ мувиклип - в нем набрал формочку для ввода логина и пароля, на нее кинул текст, 2 редактируемых текстовых поля TLFTextField и кнопку Submit_btn. Затем создал класс LoginForm, привязал его к мувику:

package
{

import flash.display.*;
import flash.text.*;
import flash.events.*;
import fl.text.TLFTextField;

public class LoginForm extends MovieClip
{

public var login:TLFTextField = new TLFTextField ();
public var password:TLFTextField = new TLFTextField ();
public var submit_btn:SimpleButton;

public function LoginForm()
{
// constructor code
password.displayAsPassword = true; // здесь должна быть маскировка //пароля, но у меня она не сработала
submit_btn.addEventListener(MouseEvent.CLICK, submitListener);
}
private function submitListener(e:MouseEvent):void
{
submit(login.text, password.text);
}
public function submit (name:String, pass:String):void {
trace ("Проходим идентификацию " + name + " с паролем " + pass);
/*Здесь должен быть код отправки данных на сервер*/
}
}

}

т.е. объекты кинутые в кадр визуально, объявляются в коде с теми же именами. У Мука есть рекомендация при этом отключать в настройках экшнскрипта 3.0 опцию "Автоматически объявлять экземпляры в рабочей области", но она по моему и так не работает, по крайней мере не для всех компонентов. Приведенный код работает, более того я его прикрепил к двум мувикам с разной цветовой гаммой формы (просто вписал базовый класс для мувиков LoginForm, флеш автоматически создала 2 дочерних класса по именам мувиков) - обе формы работают на одном кадре.
Затем я попытался усложнить пример и тут опять начались непонятки. Написал класс документа с кнопкой переключения между кадрами (кнопку тоже создал визуально):
package {

import flash.display.MovieClip;
import flash.events.*;
import flash.display.*;

public class UseLoginForm extends MovieClip {

public var change_btn:SimpleButton;
public var Login1:LoginFormStile_1 = new LoginFormStile_1 ();
public var Login2:LoginFormStile_2 = new LoginFormStile_2 ();

public function UseLoginForm() {
// constructor code

this.stop();
change_btn.addEventListener (MouseEvent.CLICK, onChangeClick);
}

public function onChangeClick (e:MouseEvent):void {
this.gotoAndStop (2);
}
}

}

Это одна из версий кода, над ним я долго экспериментировал, но смысл в том, что держать экземпляры форм авторизации на разных кадрах у меня не получается, выкидывается ReferenceError, либо хотя бы 1 форма не работает (в данном примере не работает форма 1 на первом кадре). Почему - я не понимаю, было бы интересно узнать мнение опытных флешеров.

Комментарии (1)   Автор: PainKiller
Комментарии
PainKiller
22.08.11 | 21:19
0 баллов

Не понял,а почему мой вопрос вечный?

 
 
 
 

Полезные ссылки

Реклама сайтов

Скидки на жемчуг и янтарь. Оптовая продажа жемчуга в москве. Индийские украшения и бижутерия.
Модные украшения, жемчуг. Посмотрите каталог ювелирной бижутерии на сайте. Скидки в мире жемчуга.