Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   загрузка файла произошла, а как работать с параметрами дальше? (http://www.flasher.ru/forum/showthread.php?t=144730)

wlad 20.09.2010 02:27

загрузка файла произошла, а как работать с параметрами дальше?
 
Друзья!

Вот я произвел загрузку файла путем работы с функцией

Код AS1/AS2:

function completeHandler(event:Event):void
{
 
// изменились многие параметры
}

Делаю
Код AS3:

variables.addEventListener(Event.COMPLETE, completeHandler);

и - он ужас! Оказывается все переменные, значения которых я менял в этой функции, своих значений отнюдь не изменили...

Где я неправ?

BlooDHounD 20.09.2010 02:43

вас не понятно. опишите пример по конкретнее

wlad 20.09.2010 23:15

Дорогие друзья!

Сейчас мне удалось создать яркий и колоритный, с МОЕЙ точки зрения, пример, который иллюстрирует МОЕ непонимание работы с некими вещами


Код AS3:

var jj:int = 2;
 
function zzz()
{
        trace ("Привет!");
}
 
zzz();
jj = 4;
trace(jj);
 
<b>Здесь все Ок! Вывод: "4"b>
 
// тест ф-и посложнее...
 
function reportClick(event:MouseEvent):void
{
            var tb_rc:TextField = new TextField();  tb_rc.width = 50; tb_rc.height = 50;
          tb_rc.y = 200;
          tb_rc.x = 100;
    tb_rc.background = true;
        tb_rc.backgroundColor = 0xCCFF99;       
        tb_rc.text = "";
        tb_rc.text = event.localX.toString();
          addChild(tb_rc);
 
        jj = 8;
 
// моя наивная логика: я на полном серьезе считаю, что после применения этой ф-и jj будет 8
 
 
 
}  // function reportClick(event:MouseEvent):void
 
// для ловли мыши на экране...
 
stage.addEventListener(MouseEvent.CLICK, reportClick); //
 
// и вот... я создаю другой контроллер поведения интересующего меня параметра
 
            var tb_rc_c:TextField = new TextField();  tb_rc_c.width = 50; tb_rc_c.height = 50;
          tb_rc_c.y = 200;
          tb_rc_c.x = 100;
    tb_rc_c.background = true;
        tb_rc_c.backgroundColor = 0xCCFFEE;       
        tb_rc_c.text = "";
        tb_rc_c.text =  " jj = " + jj;
          addChild(tb_rc_c);

И в момент нажатия - чудеса: четверка там, восьмерка здесь.

Для одной и той же переменной!

dimarik 21.09.2010 00:34

Все логично, Вы же сделали в reportClick присвоение
Код AS3:

jj = 8;

Зачем там кусок кода с текстовым полем, я не понял, ну и ладно. Что совсем не удалось понять, что Вас беспокоит и что с ВАШЕЙ токи зрения происходит не так и в чем непонимание. Объясните, что Вы ожидали увидеть.

samana 21.09.2010 00:41

Ну да, код
Код AS3:

 tb_rc_c.text =  " jj = " + jj;

выводится сразу, до того как произошел клик мышки, тоесть jj ещё равна 4.
После клика jj становится 8. Все верно.

wlad 21.09.2010 00:55

Дорогие друзья!

Ну почему же после клика эта самая проклятая четверка не превращается в восьмерку? Ведь это противоречие логике хранения данных: или в ячейке хранится четверка, или восьмерка...

Код AS3:

tb_rc_c.text =  " jj = " + jj;

Может быть, дело в том, что я как-то забыл обновить состояние. Т.е. нет чего-то типа stage.update(); В XNA, к примеру, Draw() несколько раз в секунду что-то прорисовывает...

Добавлено через 1 минуту
Господа!

Гляньте на этот код у себя, если можно, а то просто никаких параметров присваивать нельзя, вся логика рушится...

samana 21.09.2010 01:05

Да я проверил конечно, всё правильно, добавьте
Код AS3:

jj = 8;
trace(jj)

И вы убедитесь что после клика она равна 8

Добавлено через 7 минут
Вот ваш код, без непонятных текстовых полей, посмотрите, как тут может быть не логично, всё правильно ведь.
Код AS3:

var jj:int = 2;
jj = 4;
trace(jj);
 
function reportClick(event:MouseEvent):void
{
        jj = 8;
        trace(jj)
}
 
stage.addEventListener(MouseEvent.CLICK, reportClick);


wlad 21.09.2010 01:57

Дорогие друзья!

Так ведь задача не в этом!

У меня будет куча значительно более сложных функций и переменных!

Важно, чтобы после ОБРАБОТКИ В Ф-И переменная ПРИОБРЕТАЛА НУЖНОЕ ЗНАЧЕНИЕ!

Здесь, без специальных сигналов по обновлению, проконтролировать это невозможно!

Словить значение,
Код AS3:

 присвоенное переменной - тоже!


КорДум 21.09.2010 08:29

Не волнуйтесь, оно и без сигналов по обновлению будет переназначаться без проблем. Во всяком случае, когда вы точно пишете переназначение. Если у вас есть такая некая фобия, ставьте трейсы после каждого переназначения (:

f.g.programmer 21.09.2010 09:20

Я вроде понял, чего хочет wlad. Чтобы при изменении переменной jj автоматически менялось значение во всех текстовых полях, в которые произошла запись jj значения.

Это можно сделать например так, объявить jj как метод сеттер, и внутри этого метода обновить все связанные с этой переменной текстовые поля (непосредственно или сгенерировав какое-нибудь событие)

Код AS3:

var _jj:int
function set jj(value:int):void {
        _jj = value;
        tb_rc_c.text =  " jj = " + _jj;
        trace(tb_rc_c.text);
}
 
jj = 4;
jj = 8;



Часовой пояс GMT +4, время: 10:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.