Результаты поиска
Разгрузка ByteArray используя Actionscript 3
Как я могу принудительно выгрузить ByteArray из памяти с помощью ActionScript 3?
Я попробовал следующее:
// First non-working solution
byteArray.length = 0;
byteArray = new ByteArray();
// Second non-working solution
for ( var i:int=0; i < byteArray.length; i++ ) {
byteArray[i] = null;
}
SQLStatement.execute()-несколько запросов в одном операторе
Я написал сценарий генерации базы данных в SQL и хочу выполнить его в своем приложении Adobe AIR :
Create Table tRole (
roleID integer Primary Key
,roleName varchar(40)
);
Create Table tFile (
fileID integer Primary Key
,fileName varchar(50)
,fileDescription varchar(500)
,thumbnailID integer
,fileFormatID integer
,categoryID integer
,isFavorite boolean
,dateAdded date
,globalAccessCount integer
,lastAccessTime date
,downloadComplete boolean
,isNew boolean
,isSpotlight boolean
,duration varchar(30)
);
Create Table tCategory (
categoryID integer Primary Key
,categoryName varchar(50)
,parent_categoryID integer
);
...
Я выполняю это в Adobe AIR, используя следующие методы:
public static function RunSqlFromFile(fileName:String):void {
var file:File = File.applicationDirectory.resolvePath(fileName);
var stream:FileStream = new FileStream();
stream.open(file, FileMode.READ)
var strSql:String = stream.readUTFBytes(stream.bytesAvailable);
NonQuery(strSql);
}
public static function NonQuery(strSQL:String):void {
var sqlConnection:SQLConnection = new SQLConnection();
sqlConnection.open(File.applicationStorageDirectory.resolvePath(DBPATH));
var sqlStatement:SQLStatement = new SQLStatement();
sqlStatement.text = strSQL;
sqlStatement.sqlConnection = sqlConnection;
try {
sqlStatement.execute();
} catch (error:SQLError) {
Alert.show(error.toString());
}
}
Ошибки не генерируются, однако существует только tRole . Похоже, что он смотрит только на первый запрос (вплоть до точки с запятой - если я удалю его, запрос не будет выполнен). Есть ли способ вызвать несколько запросов в одном операторе?
Использование нескольких баз данных SQLite одновременно
У меня есть 2 базы данных SQLite, одна загружена с сервера (server.db), а другая используется в качестве хранилища на клиенте ( client.db). Мне нужно выполнить различные запросы синхронизации в клиентской базе данных, используя данные из базы данных сервера.
Например, я хочу удалить все строки в таблице client.db tRole и повторно заполнить все строки в таблице server.db tRole .
Другой пример: я хочу удалить все строки в таблице client.db tFile , где fileID не находится в таблице server.db tFile .
В SQL Server вы можете просто префиксировать таблицу с именем базы данных. Есть ли вообще возможность сделать это в SQLite, используя Adobe Air?
Использование нескольких баз данных SQLite одновременно
У меня есть 2 базы данных SQLite, одна загружена с сервера (server.db), а другая используется в качестве хранилища на клиенте ( client.db). Мне нужно выполнить различные запросы синхронизации в клиентской базе данных, используя данные из базы данных сервера.
Например, я хочу удалить все строки в таблице client.db tRole и повторно заполнить все строки в таблице server.db tRole .
Другой пример: я хочу удалить все строки в таблице client.db tFile , где fileID не находится в таблице server.db tFile .
В SQL Server вы можете просто префиксировать таблицу с именем базы данных. Есть ли вообще возможность сделать это в SQLite, используя Adobe Air?
Flex / Air обфускация
Я написал (большую часть) приложения в Flex, и я озабочен защитой исходного кода. Я запустил демо - версию trillix swf decompiler и открыл swf-файл, который был установлен в мой каталог Program Files. Я увидел, что все пакеты actionscript, которые я написал, были там. Я не слишком беспокоюсь о пакетах, даже несмотря на то, что существует значительное количество кода, потому что он все еще кажется довольно непригодным для использования без файлов mxml. Я думаю, что они преобразованы в actionscript, или, по крайней мере, я надеюсь. Однако я все же хотел бы исследовать запутанность.
Есть ли у кого-нибудь опыт работы с Flash / Actionscript 3 / Flex обфускаторы? Можете ли вы порекомендовать хороший продукт?
Откройте локальный файл с помощью AIR / Flex
Я написал приложение AIR, которое загружает видео и документы с сервера. Видео воспроизводится внутри приложения, но я хотел бы, чтобы пользователь мог открывать документы в своих собственных приложениях.
Я ищу способ предложить пользователю открыть / Сохранить как локальный файл, хранящийся в каталоге хранения приложений. Я пробовал использовать классы FileReference + URLRequest, но это вызывает исключение, что ему нужен удаленный url.
Мое последнее средство-просто скопировать файл на их рабочий стол : \
Откройте локальный файл с помощью AIR / Flex
Я написал приложение AIR, которое загружает видео и документы с сервера. Видео воспроизводится внутри приложения, но я хотел бы, чтобы пользователь мог открывать документы в своих собственных приложениях.
Я ищу способ предложить пользователю открыть / Сохранить как локальный файл, хранящийся в каталоге хранения приложений. Я пробовал использовать классы FileReference + URLRequest, но это вызывает исключение, что ему нужен удаленный url.
Мое последнее средство-просто скопировать файл на их рабочий стол : \
Как мне перестроить аккордеон Adobe Flex, чтобы включить кнопку в каждый заголовок холста?
Вот пример кода для моего аккордеона:
<mx:Accordion x="15" y="15" width="230" height="599" styleName="myAccordion">
<mx:Canvas id="pnlSpotlight" label="SPOTLIGHT" height="100%" width="100%" horizontalScrollPolicy="off">
<mx:VBox width="100%" height="80%" paddingTop="2" paddingBottom="1" verticalGap="1">
<mx:Repeater id="rptrSpotlight" dataProvider="{aSpotlight}">
<sm:SmallCourseListItem
viewClick="PlayFile(event.currentTarget.getRepeaterItem().fileID);"
Description="{rptrSpotlight.currentItem.fileDescription}"
FileID = "{rptrSpotlight.currentItem.fileID}"
detailsClick="{detailsView.SetFile(event.currentTarget.getRepeaterItem().fileID,this)}"
Title="{rptrSpotlight.currentItem.fileTitle}"
FileIcon="{iconLibrary.getIcon(rptrSpotlight.currentItem.fileExtension)}" />
</mx:Repeater>
</mx:VBox>
</mx:Canvas>
</mx:Accordion>
Я хотел бы включить кнопку в каждый заголовок, например:
Flex: существует ли безболезненная программная привязка данных?
До сих пор я только немного занимался разработкой Flex, но я предпочитал подход создания элементов управления программно над файлами mxml, потому что (и , пожалуйста, поправьте меня, если я ошибаюсь!) Я понял, что вы не можете иметь его в обоих направлениях-то есть иметь функциональность класса в отдельном файле класса ActionScript, но иметь содержащиеся элементы, объявленные в mxml.
С точки зрения производительности разница невелика, но программная привязка данных кажется несколько менее тривиальной. Я посмотрел, как компилятор mxml преобразует выражения привязки данных. В результате получается куча сгенерированных обратных вызовов и гораздо больше строк, чем в представлении mxml. Итак, вот в чем вопрос: есть ли способ сделать привязку данных программно, которая не включает в себя мир боли?
Как вызвать Flex SWF из удаленного домена с помощью Flash (AS3)?
У меня есть Flex swf, размещенный в http://www.a.com/a.swf . У меня есть код flash на другом doamin, который пытается загрузить SWF:
_loader = new Loader();
var req:URLRequest = new URLRequest("http://services.nuconomy.com/n.swf");
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaderFinish);
_loader.load(req);
На событии onLoaderFinish я пытаюсь загрузить классы из удаленного SWF и создать их:
_loader.contentLoaderInfo.applicationDomain.getDefinition("someClassName") as Class
Когда этот код выполняется, я получаю следующее исключение
SecurityError: Error #2119: Security sandbox violation: caller http://localhost.service:1234/flashTest/Main.swf cannot access LoaderInfo.applicationDomain owned by http://www.b.com/b.swf.
at flash.display::LoaderInfo/get applicationDomain()
at NuconomyLoader/onLoaderFinish()
Есть ли способ заставить этот код работать?
Рекомендации по синтаксическому анализу AS3 XML
У меня были некоторые проблемы с разбором различных типов XML внутри flash (в частности, FeedBurner RSS файлов и YouTube Data API ответов). Я использую URLLoader для загрузки файла XML, а после Event.COMPLETE создаю новый объект XML. 75% время от времени это работает нормально, и время от времени я получаю этот тип исключения:
TypeError: Error #1085: The element type "link" must be terminated by the matching end-tag "</link>".
Мы думаем, что проблема заключается в том, что XML является большим, и, возможно, событие Event.COMPLETE запускается до того, как XML фактически загружается с URLLoader . Единственное решение, которое мы придумали, - это установить таймер на событие, и по существу "wait a few seconds", прежде чем начать анализировать данные. Конечно, это не может быть лучшим способом сделать это.
Есть ли какой-нибудь верный способ разобрать XML внутри Flash?
Update Sept 2 2008 мы пришли к следующему выводу, что в этот момент в коде срабатывает исключение:
data = new XML(mainXMLLoader.data);
// calculate the total number of entries.
for each (var i in data.channel.item){
_totalEntries++;
}
Я разместил оператор try/catch вокруг этой части и в настоящее время отображаю сообщение об ошибке на экране, когда это происходит. Мой вопрос заключается в том, как неполный файл дойдет до этой точки, если bytesLoaded == bytesTotal ?
Я обновил исходный вопрос с отчетом о состоянии; я предполагаю, что другой вопрос может быть в том, есть ли способ определить, правильно ли проанализирован объект XML перед обращением к данным (в случае ошибки, если мой цикл подсчета количества объектов начинается до того, как XML фактически анализируется в объект)?
@Theo: Спасибо за подсказку ignoreWhitespace. Кроме того, мы определили, что событие вызывается до его готовности (мы провели несколько тестов трассировки mainXMLLoader.bytesLoaded + "/" + mainXMLLoader.bytesLoaded
Как получить метку Combobox, чтобы исчезнуть в Flex
У меня есть комбо-бокс, который сидит внутри панели в Flex 3. В основном я хочу, чтобы исчезла панель, используя эффект затухания в ActionScript. Я могу заставить fade работать нормально, однако метка комбо-бокса не исчезает. У меня была такая же проблема с кнопками и обнаружил, что их шрифты должны быть встроены. Не проблема. Я встроил шрифт, который я использовал, и метки кнопок исчезли правильно. Я пробовал аналогичный подход к комбинированному окну, но он не исчезает с выбранной метки элемента.
Вот что я сделал до сих пор: Добавьте код для шрифта в верхней части моего MXML в сценарий:
[Embed("assets/trebuc.ttf", fontName="TrebuchetMS")]
public var trebuchetMSFont:Class;
В моей функции инициализации
//register the font.
Font.registerFont(trebuchetMSFont);
combobox-е mxml:
<mx:ComboBox id="FilterFields" styleName="FilterDropdown"
left="10" right="10" top="10"
fontSize="14">
<mx:itemRenderer>
<mx:Component>
<mx:Label fontSize="10" />
</mx:Component>
</mx:itemRenderer>
</mx:ComboBox>
И стиль, который я написал, чтобы получить шрифты, примененные к комбинированному окну:
.FilterDropdown
{
embedFonts: true;
fontFamily: TrebuchetMS;
fontWeight: normal;
fontSize: 12;
}
Причина, по которой я должен был написать стиль вместо размещения его в атрибуте "FontFamily", заключалась в том, что стиль сделал весь текст в поле со списком правильным шрифтом, где атрибут "FontFamily" только заставил элементы в раскрывающемся списке использовать правильный шрифт.
Рекомендации по синтаксическому анализу AS3 XML
У меня были некоторые проблемы с разбором различных типов XML внутри flash (в частности, FeedBurner RSS файлов и YouTube Data API ответов). Я использую URLLoader для загрузки файла XML, а после Event.COMPLETE создаю новый объект XML. 75% время от времени это работает нормально, и время от времени я получаю этот тип исключения:
TypeError: Error #1085: The element type "link" must be terminated by the matching end-tag "</link>".
Мы думаем, что проблема заключается в том, что XML является большим, и, возможно, событие Event.COMPLETE запускается до того, как XML фактически загружается с URLLoader . Единственное решение, которое мы придумали, - это установить таймер на событие, и по существу "wait a few seconds", прежде чем начать анализировать данные. Конечно, это не может быть лучшим способом сделать это.
Есть ли какой-нибудь верный способ разобрать XML внутри Flash?
Update Sept 2 2008 мы пришли к следующему выводу, что в этот момент в коде срабатывает исключение:
data = new XML(mainXMLLoader.data);
// calculate the total number of entries.
for each (var i in data.channel.item){
_totalEntries++;
}
Я разместил оператор try/catch вокруг этой части и в настоящее время отображаю сообщение об ошибке на экране, когда это происходит. Мой вопрос заключается в том, как неполный файл дойдет до этой точки, если bytesLoaded == bytesTotal ?
Я обновил исходный вопрос с отчетом о состоянии; я предполагаю, что другой вопрос может быть в том, есть ли способ определить, правильно ли проанализирован объект XML перед обращением к данным (в случае ошибки, если мой цикл подсчета количества объектов начинается до того, как XML фактически анализируется в объект)?
@Theo: Спасибо за подсказку ignoreWhitespace. Кроме того, мы определили, что событие вызывается до его готовности (мы провели несколько тестов трассировки mainXMLLoader.bytesLoaded + "/" + mainXMLLoader.bytesLoaded
Каковы правила для именования классов AS3?
Я пытаюсь написать RegEx для генератора кода (в C#), чтобы определить правильный класс или имя пакета класса AS3.
Я знаю эти названия классов
- должно начинаться с буквы (заглавной или иначе)
- любая другая цифра может быть буквенно-цифровой
- не может иметь пробелов
Есть еще что-нибудь?
Создать EXE из SWF, используя Flex 3, не требуя AIR?
У меня есть простое небольшое тестовое приложение, написанное на Flex 3 (MXML и некоторые AS3). Я могу скомпилировать его в SWF просто отлично, но я хотел бы сделать его в EXE, чтобы я мог дать его нескольким моим коллегам, которые могут найти его полезным.
С Flash 8 я мог бы просто нацелить EXE вместо SWF, и это обернуло бы SWF в проектор, и все работало нормально. Есть ли эквивалент этому, используя Flex 3 SDK, который в конечном итоге не требует AIR?
Примечание: у меня нет Flex Builder, я просто использую бесплатный Flex 3 SDK.
Компонент flvplayback проблемы с памятью
Мой сайт полностью основан на flash, он перемещается вокруг модели 3D, которая была предоставлена мне в виде фрагментов видео, которые я преобразовал в файлы FLV. Я использую компонент FLVPlayback для управления видео внутри моей программы. При выполнении проверок памяти с помощью System.totalMemory я заметил, что всякий раз, когда загружается видео, оно съедает кусок памяти, и даже когда я удаляю из него все прослушиватели событий(все они слабо связаны), удаляю компонент из его родительского элемента, останавливаю видео и null экземпляр компонента, он все равно не вернет эту память.
Это беспокоило меня с тех пор, как я начал работать над этим проектом из-за огромного количества видео, которое пользователь может потенциально создать и загрузить. В настоящее время каждое видео загружается в новый экземпляр FLVPlayback всякий раз, когда это требуется, но я прочитал, что, возможно, лучший способ решить эту проблему-просто иметь глобальный экземпляр FLVPlayback и просто перезагрузить новое видео в старый экземпляр, таким образом, в памяти приложения будет только один компонент FLVPlayback.
Кто-нибудь еще столкнулся с этой проблемой? Вы нашли лучшее решение, чем использование глобального экземпляра, который вы просто повторно используете для каждого нового видео?