33 коровы – AIR. Сюрпризы от File.browseForOpen - RIA разработка, Flex, Action Script, AIR, Eclipse, Monkey script

AIR. Сюрпризы от File.browseForOpen

October 15, 2007 – 6:15 pm

Поставил флекс билдер 3 и решил пощупать AIR за самые интересные места, а именно за работу с файловой системой

Взял самый простой пример их хелпа по File метод browseForOpen

воткнул его в приложение

}
catch (error:Error)
{
trace(“Failed:”, error.message)
}
}

public function fileSelected(event:Event) : void
{
var stream : FileStream = new FileStream();
stream.open(File(event.target), FileMode.READ);
var fileData:String = stream.readUTFBytes(stream.bytesAvailable);
fileList.text = fileData;
}
]]>
и получил огромный болт – при нажатии на кнопку “Browse…” появляется окошко, в нем выбираешь файл но никакого события не происходит ни cancel ни select вообще ничего не происходит.

3 раза перечитал хелп, погуглил, нашел интересный блог от Benjamin Dobler – RichApps и там нашел описание мероприятия от адоба и его результатов (там есть весомый архив с различными примерами AIR приложений, в том числе и работы с файловой системой). Блог нужно читать всем внимательно 3 раза ибо интересно.

Так вот его пример работал, а мой нет разница был в том что моя переменная File был объявлена локально в функции и видимо на крысу по быстрому собралась мусорщиком %).

Правильный ответ в моей проблеме это объявить переменную как свойства класса и становиться замечательно!

}
catch (error:Error)
{
trace(“Failed:”, error.message)
}
}

public function fileSelected(event:Event) : void
{
var stream : FileStream = new FileStream();
stream.open(File(event.target), FileMode.READ);
var fileData:String = stream.readUTFBytes(stream.bytesAvailable);
fileList.text = fileData;
}
]]>

  1. 11 Responses to “AIR. Сюрпризы от File.browseForOpen”

  2. Это, собственно, неудивительно, т к совершенно аналогичное поведение наблюдаем у FileReference во Flash Player’e…а вот интересная (имхо) особенность: в промежутке между вызовом любого окна типа открытия/сохранения и отрисовкой этого окна air-аппликуха находится в малорабочем состоянии…проще говоря при вызове хэндлера любого ивента связанного с взаимодействием с интерфейсом у меня вываливалась ошибка. Казалось бы, это доли секанды. Однако у меня на одном компьютере просто свалка, и после включения пока грузятся десятки фоновых приложений системные окна открываются ооочень нескоро, ждать до 15-20 секунд, засчет чего и получил данную ситуацию.

    By DL1t on Oct 15, 2007

  3. блин код шалит чето у меня… нужно заводить другой разметчик )

    By Ilja on Oct 15, 2007

  4. Если честно, то в хэлпе к Flex 2 по поводу FileReference это написано. Правда вскользь, но если внимательно читать :) Я в свое время тоже мучался пока внимательно не прочел :)))

    By Constantiner on Oct 16, 2007

  5. Где это вскользь написано ? ))
    Ненашел. Нашел только


    While calls to the FileReference.browse(), FileReferenceList.browse(), or FileReference.download() method are executing, most players will continue SWF file playback.

    в теории можно предположить описаный результат, но это же как нужно предпологать ))

    Помоемому на таких “фичах” стоит более акцентировать внимание. Например, что броуз делает броуз и ежу понятно а вот что такой подвох есть многие могут и не осилить или потерять время, я например часа 2 убил на это.

    By Ilja on Oct 16, 2007

  6. Я тоже потерял пару часов когда в первый раз столкнулся с этим=)

    В хелпе имеется:

    In addition, if the FileReference object goes out of scope, any upload or download that is not yet completed on that object is canceled upon leaving the scope. Be sure that your FileReference object remains in scope for as long as the upload or download is expected to continue.

    By DL1t on Oct 16, 2007

  7. поповоду “подвисания” приложения при работе с FS и окнами, вы просто с Zink не работали наверна ) там такое в порядке вещей ) причем очень основательно :)

    By Reijii on Oct 16, 2007

  8. Ради интереса поискал этот кусок хелпа, встречается для методов
    download() и upload() класса FileReference

    Для browse не упоминается ничего подобного, также в классе File вообще нету ни слова.

    Грубо говоря чтобы получается чтобы водить машину мне кроме правил дорожного движения нужно знать уголовный кодекс и конституцию на зубок.

    Вобщем-то это канечно мелочь, типа не стоит делать из мухи слона, но этих мух уже столько, что на десяток слонов хватит :)

    By Ilja on Oct 16, 2007

  9. Святая правда! Никакой конкретики по этому поводу в документации нет. Аналогичная проблема, flex3, убил 3 часа, и убил бы наверное больше, если бы не набрел на Ваш блог )

    By Alan on Mar 11, 2008

  10. Спасиба большущее!!!

    Действительно не помешало бы в доки эту инфу повесить разработчикам…

    By Katun on Nov 6, 2008

  11. Сами виноваты, если даже не пытаетесь воткнуть как работает этот ActionScript, то же мне баги ловят…

    By wolf on Jan 5, 2009

  12. Друг! Супер! Спасибо большое! Аналогичная проблема была во Flash CS4 с FileFeferenceList ! C FileReference события select и cancel и error и т.д. возникали, а с FileFeferenceList – нет. Ты очень помог мне!!! Ты мой собственный Иисус Христос! Спасибо! Тебе! Ибо в первых строках гугла засвечены посты, просто скопированные из справок флеша. Чтоб вырваться твоему сайту на первое место! Аминь!

    By Антон on Apr 7, 2010

Sorry, comments for this entry are closed at this time.



]]> rss о RIA от 33 Коровы
Забадать RSS!
]]>
~~~~~~