Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> чтоб из функции не возвращалось , пока... 
:(
    Опции темы
PROCESSOR
Дата 29.8.2005, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 25.5.2005

Репутация: нет
Всего: нет



Есть функция: q=load('file.txt')

в load - происходит простая загрузка файла. Но мне надо, чтобы пока загрузка не законичилось - выхода из load не происходило.

Как я понимаю, надо сделать вечный цикл, проверяющий установленна переменная ( конца загрузки или нет ) и тогда выходить. Но чото не получается - при вечном цикле - FLASH виснет.

Можно пример плиз.

Щас пока юзаю - вызов указанной функции по загрузке . Но это не красиво.
PM MAIL   Вверх
AntonioBanderaz
Дата 29.8.2005, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



Делай через XML, в нём определены свойства или параметры, как кому угодно, getBytesLoaded() и getBytesTotal()
Вешаешь на XML листинер и проверяешь когда эти два параметра будут равны, тогда и типо загрузился твой файл полностью... Я те попозже примерчик накатаю и кину...


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
PROCESSOR
Дата 29.8.2005, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 25.5.2005

Репутация: нет
Всего: нет



AntonioBanderaz

Я это знаю. Мне другое нужно.

Код

XML.prototype.ignoreWhite = true;

function load(q) {
    xml=new XML()
    xml.onLoad=function (rez) { trace ("1") }
    xml.load (q)
    }

load ("txt.xml")
trace ("2")


Надо чтобы 2 появилось после 1 ( trace смотри ). т.е. пока не выполнилось действие onLoad - выхода из функции load не было.

Если задать вопрос по другому - можно ли как-то остановить код на месте, пока не выполниться условие. Вродебы простой вечный цикл , где проверяется переменаая и всё... но почему FLASH виснет.




PM MAIL   Вверх
AntonioBanderaz
Дата 30.8.2005, 04:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



А мне интерестно зачем тебе это надо?
Что у тебя в цикле стоит? Какой код вообще?




--------------------
ГЫ... 
PM MAIL ICQ   Вверх
PROCESSOR
Дата 30.8.2005, 05:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 25.5.2005

Репутация: нет
Всего: нет



Код


function load(q) {
    xml=new XML()
    xml.onLoad=function (rez) { xml.q=false}
    xml.q=true
    xml.load (q)
    while (xml.q) { }   
    }



примерно так. Но таким циклом он даже загрузку не делает - виснет сразу. Если чото в цикл вставлять не помогает.


PM MAIL   Вверх
AntonioBanderaz
Дата 30.8.2005, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



попробуй чуток поменять...


Код

function loadUrl(url:String) {
    var xml:XML = new XML();
    var checkL:Boolean = true;
    var temp:Boolean = true;
    function isLoad():Boolean {
        return checkL;
    }
    xml.onLoad = function(rez:Boolean) {
        checkL = false;
    };
    xml.load(url);
    while (temp) {
        temp = isLoad();
    }
}


Я не уверен что он здесь не зависнит, у Flash'a на этот счёт свои заморочки, типо как с рекурсией, только 256 вложений может быть, да и прикинь, что будет если у человека комп слабый... Cltkfk ,s aeyrwbzvb b yt vfzkcz/// =)


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
AlDev
Дата 30.8.2005, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 9
Всего: 50



если для файла с переменными - юзай loadVars
PM MAIL WWW ICQ YIM MSN   Вверх
AntonioBanderaz
Дата 31.8.2005, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



Alex Batsuev -ему-же другое нужно, ему нужен аналог wait(); т.е. остановить выполнение кода пока что-то там не будет равно чуму-то там... Это прикольно конечно, удобненько станет, если сделать чтобы ресурсы проца в это время не жрал бесконечными переборами и циклами, рекурсиями, и прочей подобной байдой "ВАЩЕ" супер было бы...


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
AlDev
Дата 31.8.2005, 04:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 9
Всего: 50



Цитата(PROCESSOR @ 30.8.2005, 03:12)
в load - происходит простая загрузка файла. Но мне надо, чтобы пока загрузка не законичилось - выхода из load не происходило.

Как я понимаю, надо сделать вечный цикл, проверяющий установленна переменная конца загрузки или нет и тогда выходить. Но чото не получается - при вечном цикле - FLASH виснет.


проще просто передавать ссылку на объект, где ьписано событие onLoad.

как вариант, делай setInterval:
Код

class fileLoader
{
  private var listObject:Object;
  private var loadCheckInterval:Number;
  private var is_loaded:Boolean;
  //-- class constructor
  public function fileLoader()
  {
  }
  //-- load file
  public function load(url:String):Void
  {
    this.is_loaded = false;
    this.loadCheckInterval = setInterval(this.checkLoading,1,this);
  }
  //-- add listener
  public function setListener(list:Object):Void
  {
      this.listObject = list;
  }
  //-- check file loading
  private function checkLoading(ths:Object):Void
  {
    if (ths.is_loaded)
    {
        ths.listObject.onLoad();
        clearInterval(ths.loadCheckInterval);
    }
  }
}

//------------
// usage:
var fl:fileLoader = new fileLoader();
var list:Object = new Object();
list.onLoad = function()
{
    trace ('loaded');
}
fl.setListener(list);
fl.load('data.txt');


в load добавь свой код. Тогда ты просто создаешь событие, проверяющее загрузку.
Дело в том, что с функцией очень тяжело в этом плане работать и проще просто создать событие или установить property.

для работы с событиями можно юзать то, что я тут сверху понаписал
потом можно юзать класс mx.events.EventDispatcher
как 3-й способ - watch.

ещё кое-что интересное на эту тему от john-а:
http://potapenko.com/rus/articles/conveyor.htm

PM MAIL WWW ICQ YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Flash"
AlDev
SoWa
  • Если вы хотите предложить кому-либо работу, то пишите или в личку, или оставляйте сообщения в специально предназначеном для этого форуме "Объявления о найме специалистов"
  • Один вопрос - одна тема. Не надо переходов от одного вопроса к другому.
  • Если вы хотите показать какой-нибудь ваш мульт, причём показать, а не предоставить исходник, то вам сюда
  • Вопросы про программирование на ActionScript 1,2 (Flash 8 и более ранние версии) пишите в форуме ActionScript 1,2
  • Вопросы по разработке интернет-приложений на Flex и вопросы по MXML пишите в раздел Flex
  • Смотрим в будущее. ActionScript 3 обсуждается в форуме ActionScript 3
  • Новости из мира Flash.
  • New! [code=ascript][/code] - подсветка ActionScript + wikipedia help

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, AlDev, SoWa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Flash | Следующая тема »


 




[ Время генерации скрипта: 0.0957 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.