![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Mar 2008
Сообщений: 6
|
Простите за тупой вопрос. До этого с AS/Flash не работал никогда но тут два дня назад пришлось.
Скачал Adobe Flash CS3 Trial, создал с горем пополам fla документ, забиндил на Document class , "main.test1" все работает. Создал Symbol, привязал его к main.myButton, положил myButton.as в /main/, все работает. Создал еще один Symbol привязал его к main.myButton2. И возникла проблема, надо по событию в myButton скрыть символ myButton2. Если сделать метод ставящий visible = false в myButton2, его не видно из myButton. Если сделать его статическим, его видно, но к переменной visible внутри метода доступа нет. Как только не извращался методом тыка, читал документацию, но понять сакральный смысл этой проблемы не могу. Как это можно сделать?. |
|
|||||
|
ветеран форума
|
ну во-первых, экземпляр myButtton должен как-то получать ссылку на экземпляр myButton2, и затем уже у этого экземпляра нужно менять свойства/вызывать методы. Для примера, в Document Class подписываемся на нужный event myButton-а, и по нему вызываем нужное действие в myButton2.
P. S. Имена классов должны начинаться с большой буквы
__________________
4am is time to rock |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 6
|
>ну во-первых, экземпляр myButtton должен как-то получать ссылку на экземпляр myButton2, и затем уже у этого экземпляра нужно менять свойства/вызывать методы. Для примера, в Document Class подписываемся на нужный event myButton-а, и по нему вызываем нужное действие в myButton2.
> >P. S. Имена классов должны начинаться с большой буквы Они в пакете main, и допустим код /main/myButton2.as
package main {
public class myButton2 extends MovieClip {
....
static public function hello() {
trace("Hello World!");
}
}
}
/main/myButton.as
package main {
public class myButton extends MovieClip {
....
public function myButton() {
main.myButton2.hello();
}
}
}
Однако проблема в том что /main/myButton2.as
package main {
public class myButton2 extends MovieClip {
....
public function setVisible(vis_state:Boolean) {
visible=vis_state;
}
....
public function myButton2() {
setVisible(false); // Все отработает, и символ скроется
}
}
}
/main/myButton.as
package main {
public class myButton extends MovieClip {
....
public function myButton() {
main.myButton2.setVisible(true); // крикнет что метода setVisible у myButton2 нет. Однако там метод в паблике и это меня ужасно путает, т.к. я не понимаю чего-то by design.
}
}
}
/main/myButton2.as
package main {
public class myButton2 extends MovieClip {
....
static public function setVisible(vis_state:Boolean) {
visible=vis_state; // Скажет что перменная visible недоступна.
}
}
}
/main/myButton.as
package main {
public class myButton extends MovieClip {
....
public function myButton() {
main.myButton2.setVisible(true); // скажет что переменная visible внутри метода main.myButton2.setVisible() недоступна.
}
}
}
>P. S. Имена классов должны начинаться с большой буквы 0_o. UPD: Хм. Походу я очень затупил посчитав что main.myButton2 возвращает созданный в рантайме экземпляр класса. UPD2: Все, вспомнил что значит статик в сях, понял свою ошибку, спасибо). Последний раз редактировалось n0uk; 01.03.2008 в 03:07. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
n0uk, во AS нет ни одного класса, чье имя начинается c маленькой буквы. А ваши кастомные почему-то как раз такие. Почему?
|
|
|||||
|
Регистрация: Mar 2008
Сообщений: 6
|
потому что это привычка). А то что в АС это плохой тон, я не знал).
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Это плохой тон также и в других ECMAScript-языках. В Java в т.ч.
|
|
|||||
|
strange mood
|
В разах примерно так
package{
import flash.display.MovieClip;
import flash.display.SimpleButton;
import flash.events.MouseEvent;
//Document root class
public class Main extends MovieClip{
//Будем считать что автоматическое объявление отключено
var btn1:SimpleButton;
var btn2:SimpleButton;
//constructor
function Main(){
this.btn1.addEventListener(MouseEvent.CLICK, this.btn1ClickHandler);
}//constructor
private function btn1ClickHandler(e:MouseEvent){
this.btn2.visible=(!this.btn2.visible);
}//btn1ClickHandler
}//Main
}//package
__________________
тонкий тролль, осеянный благодатью |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:09. |
|
|
« Предыдущая тема | Следующая тема » |
|
|