Форум 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=131200)

Ynks 15.10.2009 11:16

Цитата:

вы свой код вызывайте из xmlLoadComplete
Да, так можно. Но это всю программу надо туда запхнуть... как-то по-чайниковски мне кажется, может есть красивый способ :)

Хм, что-то я все пробую, что вы советуете и безрезультатно...
Тогда приведу в пример код, кот. идет у меня дальше, может сиуация разъяснится :)

Код AS3:

var tfCount:int; //Кол-во текстовых полей (новостей)
        xmlLoadComplete(null);
function xmlLoadComplete(event:Event):void
                {
                        var newsPaper:XML = new XML(event.target.data);
                        var newsCount:int =  newsPaper.@count; //8 новостей в XML файле
                                tfCount = newsCount;
                }
var tf:Array = new Array(); //массив текстовых полей
        for (var i:int=0; i<tfCount; i++)
                {...

В итоге массив у меня должен быть от 0 до 8, а получается от 0 до 0. Так как tfCount вне xmlLoadComplete равна нулю.

alecsisk 15.10.2009 11:17

Прочитайте внимательно полностью моё последнее сообщение.

Код AS3:

var tfCount:int; //Кол-во текстовых полей (новостей)
function xmlLoadComplete(event:Event):void {
        var newsPaper:XML = new XML(event.target.data);
        var newsCount:int =  newsPaper.@count; //8 новостей в XML файле
        tfCount = newsCount;
        someMethod();
}
 
function someMethod():void {
        var tf:Array = new Array(); //массив текстовых полей
        for (var i:int=0; i<tfCount; i++) {};
}


Ynks 15.10.2009 11:33

Ух... сработало :) Спасибо.
Но возникли попутные вопросы:
1. Как этот способ называется? Ну в смысле что мы сделали? Создали новую ф-ю и передали в ее все или как... как это сказать? :)
2. Я попробовал. Теперь массив tf у меня оказался внутри новой ф-ии someMethod (к примеру) и все, что ниже массива и то, что от него зависит — перестало работать, так как массив тоже стал как бы локальным. Как теперь быть? С новой этой ф-ии someMethod таким же способом передавать переменные и каждое действие засовыват в отдельную нову. ф-ю?

alecsisk 15.10.2009 11:46

1. Мы ничего не передавали. tfCount, если обьяснить проще глобальная и доступна из любой нашей функции.
2. Можно tf тоже обьявить вне функции чтобы сделать его доступной откуда угодно. Или передать в качестве аргумента (на примере tfCount):

Код AS3:

function xmlLoadComplete(event:Event):void {
        var tfCount:int; // tfCount локальная
        var newsPaper:XML = new XML(event.target.data);
        var newsCount:int =  newsPaper.@count; //8 новостей в XML файле
        tfCount = newsCount;
        someMethod(tfCount); // передаём tfCount
}
 
function someMethod(count:int):void {  // принимаем tfCount как count
        trace(count); // смотрим значение
        var tf:Array = new Array(); //массив текстовых полей
}

Вообще, то что мы сейчас обсуждаем уже давно не используется. Изучайте ООП, там всё делается гораздо проще.

Ynks 15.10.2009 11:58

Еще раз спасибо. То, что я узнал гораздно облегчит мою деятельность :) Удобно.

Цитата:

Вообще, то что мы сейчас обсуждаем уже давно не используется. Изучайте ООП, там всё делается гораздо проще.
Упс, а я думал, что как раз ООП и занимаюсь :) Видать, это не то, что я думаю.
alecsisk, если это реализовать гораздо проще — можешь показать тут маленькй примерчик такого же, что делал я только эм... в ООП? :)

Felicast 15.10.2009 12:23

Цитата:

Упс, а я думал, что как раз ООП и занимаюсь Видать, это не то, что я думаю.
вы пишете в кадрах - это не ООП.

Ynks 15.10.2009 12:28

Цитата:

вы пишете в кадрах - это не ООП.
Понял. Тогда в двух словах не объяснишь на примере ООП. Ок, спасибо.

Felicast 15.10.2009 13:08

Цитата:

Тогда в двух словах не объяснишь на примере ООП.
ты взорвал мой мозг этим выражением. явно напрашивается вопросительная интонация. но вконце ".". да еще и
Цитата:

Ок, спасибо.
а для того, чтобы мне что-нибудь объяснить, мне нужно знать формулировку задачи

Ynks 15.10.2009 13:13

Цитата:

а для того, чтобы мне что-нибудь объяснить, мне нужно знать формулировку задачи
Ты не так понял :) Скорее всего ты там увидел какую-то иронию. Нет. Я не просил объяснять. И не намекал, что мол ладно... спасибо. Нет. Прсто поблагодарил за объяснение, что имеется в виду под ООП. Проще на вещи смотри :)
Флудим...

alecsisk 15.10.2009 14:29

Вложений: 1
Ставь сразу FD (FlashDevelop), если хочешь чему-нибудь научиться. Если не хочешь, то укажи во Flash класс документа(document class) Main.as из папки src.


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

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