Просмотр полной версии : возврат из Функц
есть такая фишка
readfile = new XML();
readfile.ignoreWhite = true;
readfile.onLoad = function(ok) {
if (ok) {
var str = readfile;
}
};
readfile.load("test.txt");
win.htmlText = str; <- str пуст! почему? как правельно нада делать?
readfile = new XML();
readfile.ignoreWhite = true;
readfile.onLoad = function(ok) {
if (ok) {
var str = readfile;
win.htmlText = str;
}
};
readfile.load("test.txt");
ты записываешь в текст значения которые еще не загружены.
function file(filename) {
readfile = new XML();
readfile.ignoreWhite = true;
readfile.onLoad = function(ok) {
if (ok) {
str = readfile;
}
};
readfile.load(filename);
return str; // ????
}
var f;
f = file('test.txt');
win.htmlText = f;
вот как мне нада, чтобы была функция..
как мне правельно возвратить значение?
onData написав этот код и нажав валшебную кнопку F1 ты увидешь код который тебе нужен.
readfile.onData = function(ok) {
return ok;
};
всёравно я немагу выйти из этой левой функции..
ну как мне достать переменную от туда?
IeshuaGaNocry
21.12.2005, 04:07
readfile.onLoad = function(ok) {
if (ok) {
str = readfile;
}
};
onLoad - наступает только тогда, когда файл полностью загружен.
пиши так:
...
readfile.onLoad = function(ok) {
if (ok) {
var str = readfile;
win.htmlText = str;
}
};
...
Преимущество onData в данном случае в том, что не надо будет писать в файле переменную. Параметр src, передаваемый обработчику события onData, будет содержать весь текст файла.
Тьйомка, могу сказать только одно: пытаясь получить значение, которое неизвестно когда будет доступно (мы заранее не знаем, когда загрузка закончится) из функции (как ты это пытался сделать в своем предыдущем треде, утверждая, что мой код "непашет скажи как сделать так чтоб запахал"), ты не учитываешь одного: функция выполнится, не дожидаясь окончания загрузки и выполнения обработчика.
Именно из-за этого и придумали модель событий и обработчики в частности.
Но т.к. читать документацию и туториалы ты не хочешь, а тебе нужно готовенькое, объяснять подробнее я не стану.
IeshuaGaNocry
21.12.2005, 05:53
Чего то ты сложно загнул для него мне кажется =)
2tj0mka
Тут понять главное:
Строчки скрипта выполняются последовательно.
Скрипт дал команду загружать текстовый файл, содержимое этого файла скрипт может взять !только после того как этот текстовый файл загрузится на 100%, следовательно этот момент нужно отслеживать.
А документацию и туториалы реально полезно читать.
а можна програмно создать Text окно (Text tool) ,
и тогда вставить туда тексть из файла
function file(filename) {
readfile = new XML();
readfile.ignoreWhite = true;
readfile.onLoad = function(ok) {
if (ok) {
// тут както создать Text окно
win.htmlText = readfile;
}
};
readfile.load(filename);
// а тут его прочитать в переменную и зделать return
return win.htmlText;
}
var f;
f = file('test.txt');
win.htmlText = f;
Или в AS ваще нельзя не как return'am пользаватся?
Я проста PHP програмер, пользуюсь пхп свойствами в AS, и нечего невыходит.. вот и парю вам мозг..
Путь JS -> AS несколько ближе, чем php->AS.
Я смотрю, не поминаешь, что тебе говорят...
Представь, что тебе нужно не файл прочитать, а поймать, куда юзвер мушкой нажал. Ты напишешь что-то похожее на
function MouseClick() {
return (mouse.press) ? mouse._x+"-"+mouse._y : 0;
}
И будешь ждать, когда же оно сработает ?
Или все таки задумаешься о написании onclick()?
Тут тоже самое, то, что ты заказал данные, не означает, что они сразу же прилетели. load() - начинает загрузку, а будет ли она завершена к моменту исполнения следующей строчки - неизвестно.
В php все события синхронизированы, то есть если выполнение строки n требует 0.1 с, то строка n + 1 будет выполнена ровно через 0.1 после начала выполнения n, в AS же все как в Java.
Но по-моему непонимание, почему "не работает" вот так:
...
function A()
{
function B()
{
return "Foo";
}
}
trace(A()); // Ничего, ессно, возвращено не будет
...
это вовсе не от программирования на php, а от незнания как работает return. А работает он во всех языках одинаково.
значет так как я хачю, невазможна зделать?
<?
function a(){
global $a;
function b(){
global $a;
$a='test';
}
b();
print $a;
}
a();
?>
// result: test
в AS _globa.variable я пробавал, и нечего невышла..
ой ё... Короче, делаем так
function A()
{
function B()
{
// Вернет в область видимости функции A!! Но никак не выше
return "foo";
}
// А вот это -- уже "наружу"
return B();
}
var returned = A();
trace(returned);
и больше вопросов не задаем, а просто читаем про области видимости. Без понимания, куда return возвращает значение, ничего серьезного не сделаешь.
как я могу её вызвать, если у неё даже имени нету..
readfile.onLoad = function(ok) {
win.htmlText = readfile;
}
function(ok){
а где имя?
function имя(ok){
(хватается за голову)
Объясняйте дальше сами, я больше не могу :)
Намек: события имеют свойство происходить без нашего вмешательства.
крч скажи прямо что ты незнаеш как зделать так как я хачю
Говорю прямо: знаю. ;)))
Но ты все равно ведь не поверишь, а исходник с примером я тебе не сделаю -- ты слишком ленив.
Типа, сжалился :))
Держи. Если после этого будут вопросы -- то ты не программер на php. Ты даже не "дизайнер на фотошоп".
/**
*
* @usage file('http://www.novemberain.com/', myHandler);
* @param url URL
* @param handler Обработчик события о загрузке
* @return Булева величина. false, если один из параметров не указан или равен null
*/
function file( url:String, handler:Function ) : Boolean
{
// Если адрес или обработчик не определены, выходим, возвращая false
if(!url || !handler)
return false;
var myLV:LoadVars = new LoadVars();
// Событие onData возникает, когда все содержимое файла загрузилось, но пары "имя-значение" еще не были разбиты
// Присваиваем обработчик, который передали
myLV.onData = handler;
// Грузим
myLV.load(url);
return true;
}
// Пример использования асинхронных функций
var myStringVar:String = "";
// Обработчик. Flash передаст обработчику события onData параметр src, содержащий текст файла, еще не разбитый на пары "имя-значение"
function myHandler ( src:String ) : Void
{
// Присваиваем текст компоненту TextArea
myTextArea.text = src;
// Записываем в переменную, не забываем про области видимости
myStringVar = src;
// Выводим
trace(src);
}
// Загружаем. Обратим внимание на передачу ссылки на функцию-обработчик
if(file('http://www.novemberain.com/?p=73', myHandler)) trace('Загрузка начата...');
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.