Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   A script in this movie is causing adobe flash player 9 to run slowly (http://www.flasher.ru/forum/showthread.php?t=91300)

bleed 29.01.2007 20:29

A script in this movie is causing adobe flash player 9 to run slowly
 
Добрый день,
написал простенький аплоадер файлов на сервер через flash
после выбора файлов происходит загрузка, которая длится некоторое время так вот примерно минут через пять выдается такое сообщение с выбором прервать или нет работу мувика:
Цитата:

A script in this movie is causing adobe flash player 9 to run slowly. If it continues to run, you computer may become unresponsive. Do you want to abort the script?
Как его избежать и по чему оно вообще лезет может кто знает?

etc 29.01.2007 20:35

Где-то бесконечный цикл получается. Или рекурсия.

Kikasso 30.01.2007 00:15

Цитата:

Сообщение от bleed
Как его избежать и по чему оно вообще лезет может кто знает?

В коде ошибка, а где - без понятия. Приложите исходник, найдем.

aksios 30.01.2007 08:22

Цитата:

Сообщение от bleed
написал простенький аплоадер файлов на сервер через flash

Цитата:

Где-то бесконечный цикл получается. Или рекурсия.
Наверное простенький не самое правильное определение, когда речь об отправке флешем данных на сервер. Поэтому и не работает.

bleed 30.01.2007 18:33

Код:

import flash.net.FileReferenceList;
import flash.net.FileReference;
var list:Array = new Array();
var item:FileReference;
var curnumber:Number = 0;
rec_mc._visible = false;
rec_mc.fillColor = 0x000066;

var listener:Object = new Object();

function Upload(i:Number)
{
        item = list[i];
        url="http://domain.ru/addfoto.php?action=upload&data="+escape(data);
        trace("Upload "+item.name);
    trace(item.addListener(listener));
        item.upload(url);
}

listener.onSelect = function(fileRefList:FileReferenceList) {
    trace("onSelect");
    list = fileRefList.fileList;
        rec_mc._visible = true;
        com.text = "Выбранно всего файлов: "+list.length+"шт. Осталось "+((list.length-1)-curnumber)+"шт.";
        trace("Выбранно файлов: "+list.length+"шт. Осталось ");
        Upload(0);
}

listener.onCancel = function():Void {
    trace("onCancel");
}

listener.onOpen = function(file:FileReference):Void {
    trace("onOpen: " + file.name);
        comment.text = "Загрузка: "+file.name;
}

listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
    trace("onProgress with bytesLoaded: " + bytesLoaded + " bytesTotal: " + bytesTotal);
        var percent = bytesLoaded/file.size;
        drawRec(percent);
}

listener.onComplete = function(file:FileReference):Void {
    trace("onComplete: " + file.name);
        comment.text = "Загруженно";
        curnumber++;
        if(curnumber < list.length)
        {
                com.text = "Выбранно всего файлов: "+list.length+"шт. Осталось "+((list.length-1)-curnumber)+"шт.";
                Upload(curnumber);
        }
        else
        {
                comment.text = "Все Загруженно";
                getURL("http://domain.ru/");
        }
}

listener.onHTTPError = function(file:FileReference, httpError:Number):Void {
    trace("onHTTPError: " + file.name + " httpError: " + httpError);
        comment.text = "error";
}

listener.onIOError = function(file:FileReference):Void {
    trace("onIOError: " + file.name);
        comment.text = "io error";
}

listener.onSecurityError = function(file:FileReference, errorString:String):Void {
    trace("onSecurityError: " + file.name + " errorString: " + errorString);
        comment.text = "sec error";
}

function drawRec(per) {
trace("drawrec"+per);
rec_mc.clear();
rec_mc.lineStyle(0);
rec_mc.beginFill(rec_mc.fillColor, 70);
rec_mc.lineTo(per*rec_mc._width, 0);
rec_mc.lineTo(per*rec_mc._width, rec_mc._height);
rec_mc.lineTo(0, rec_mc._height);
rec_mc.lineTo(0, 0);
rec_mc.endFill();
}
var fileRef:FileReferenceList = new FileReferenceList();
fileRef.addListener(listener);
fileRef.browse();

Скрипт работает, т.е. файлы отправляются на сервер, единственно что вылазит вот то сообщение примерно минут через пять работы если указать в нем что не прерывать работы мувика, мувик аплоадит до конца и прерывает работу, т.е. выполняет то что ему нужно.

bleed 30.01.2007 18:37

Цитата:

Сообщение от aksyos
Наверное простенький не самое правильное определение, когда речь об отправке флешем данных на сервер. Поэтому и не работает.

а простенький потому что это мой самый первый опыт программирования на ActionScript, потому не думаю что выполненно прямо архи профессионально, хотя опыт на с++ php javascript и perl дает о себе знать вроде все просто и понятно.

etc 30.01.2007 18:40

Судя по всему, ты не отписываешь своего листенера от событий предыдущего загруженного файла.

bleed 30.01.2007 18:59

Цитата:

Сообщение от __etc
Судя по всему, ты не отписываешь своего листенера от событий предыдущего загруженного файла.

да, я думал об этом после того как вы написали что возможна рекурсия, сейчас пришло в голову такое изменение
Код:

function Upload(i:Number)
{
        item = list[i];
        url="http://domain.ru/addfoto.php?action=upload&data="+escape(data);
        trace("Upload "+item.name);
item.removeListener(listener);
    trace(item.addListener(listener));
        item.upload(url);
}

корректно ли так, если при первом вызове функции Upload ( Upload(0); ) когда listener еще не добавлен делать item.removeListener(listener); ?

etc 30.01.2007 20:11

Не так.
Ты уже пользуешь новый item, а не старый. Т.е.
Код:

function Upload(i:Number)
{
if (item) {
  item.removeListener(listener);
}
        item = list[i];
        url="http://domain.ru/addfoto.php?action=upload&data="+escape(data);
        trace("Upload "+item.name);

    trace(item.addListener(listener));
        item.upload(url);
}


bleed 31.01.2007 07:55

Цитата:

Сообщение от __etc
Не так.
Ты уже пользуешь новый item, а не старый. Т.е.

да сорри ступил, не помогло, также примерно на 20м файле выдает собщение :(


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

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