- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是移动应用开发的新手,但我正在尝试构建移动角色扮演游戏角色表应用。我没有使用 SQLite,而是尝试使用 PersistenceManager 在应用程序中断或关闭时保留字符数据,但我不确定我是否正确使用它。这是我目前所拥有的。
主.mxml:
<?xml version="1.0" encoding="utf-8"?>
<s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" firstView="views.CharactersView"
applicationDPI="160" persistNavigatorState="true">
</s:ViewNavigatorApplication>
CharactersView.mxml:
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" creationComplete="creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
protected function creationCompleteHandler(event:FlexEvent):void
{
var o:Object = new Object();
o.name = "Aragorn";
o.type = "Ranger";
o.strength = 97;
o.speed = 7;
Database.insertCharacter(o);
trace(Database.characters.length);
}
]]>
</fx:Script>
<s:List id="list" width="100%" height="100%"/>
数据库.as:
import spark.managers.PersistenceManager;
public class Database
{
private static var data:Array = [];
private static var pm:PersistenceManager = new PersistenceManager();
public static function get characters():Array
{
if (!pm.load() || pm.getProperty("characters") == null)
{
Database.data = [];
}
else
{
Database.data = pm.getProperty("characters") as Array;
}
return data;
}
public static function insertCharacter(o:Object):void
{
Database.data.push(o);
pm.setProperty("characters", Database.data);
pm.save();
}
}
在 CharactersView.mxml 的 creationComplete 处理程序中,我正在创建一个带有一些任意信息的一次性角色,只是为了测试插入角色是否有效。每次我完全按原样运行它时,跟踪语句(我的数组的长度)都会返回 1。每次运行它时它不应该增加 1 吗?这告诉我有些不对劲,但是持久性管理器是否没有正确保存数据?我是否需要检查 pm.save() 是否返回 true,如果是,我是否应该分派(dispatch)一个事件然后才运行 trace 语句以获得正确的长度?这似乎只是为了保存一些数据而过于复杂,所以我不完全确定发生了什么或如何修复它。
无论如何,我要问的是我当前的设置是否正确,如果不正确,有没有人有一个简单的例子,或者可以根据我的代码创建一个简单的例子来说明如何正确使用 persistencemanager?
一旦我掌握了这项技术,我也可以创建其他几个应用程序,所以我真的希望能把它搞定。提前致谢!
编辑:看来我正确使用了有关 PM 的所有内容,我收到的答案确实帮助我让我的应用程序正常工作。然而,当继续前进时,我的应用程序开始表现得很滑稽。例如,我的列表似乎对交互的 react 非常缓慢,大多数其他组件也是如此。下面是新代码。
主.mxml:
<?xml version="1.0" encoding="utf-8"?>
<s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" firstView="views.CharactersView"
applicationDPI="160" persistNavigatorState="true">
</s:ViewNavigatorApplication>
CharactersView.mxml:
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" creationComplete="creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
protected function creationCompleteHandler(event:FlexEvent):void
{
update();
}
private function update():void
{
title = "D&D Characters (" + Database.characters.length + ")";
list.dataProvider = new ArrayCollection(Database.characters);
}
protected function button1_clickHandler(event:MouseEvent):void
{
var vo:CharacterVO = new CharacterVO();
vo.name = "Aragorn";
vo.className = "Ranger";
vo.race = "Human";
vo.level = 6;
vo.gender = "Male";
vo.alignment = "Unaligned";
vo.hp = 25;
vo.xp = 100;
Database.insertCharacter(vo);
update();
}
]]>
</fx:Script>
<s:actionContent>
<s:Button label="+" click="button1_clickHandler(event)"/>
</s:actionContent>
<s:List id="list" width="100%" height="100%"/>
</s:View>
数据库.as:
import spark.managers.PersistenceManager;
public class Database
{
private static var data:Array = [];
private static var pm:PersistenceManager = new PersistenceManager();
public static function get characters():Array
{
return data;
}
public static function insertCharacter(o:CharacterVO):void
{
Database.data.push(o);
pm.setProperty("characters", Database.data);
pm.save();
if (!pm.load() || pm.getProperty("characters") == null)
{
Database.data = [];
}
else
{
Database.data = pm.getProperty("characters") as Array;
}
}
}
CharacterVO.as:
import flash.utils.IDataInput;
import flash.utils.IDataOutput;
import flash.utils.IExternalizable;
public class CharacterVO implements IExternalizable
{
public var name:String;
public var className:String;
public var race:String;
public var gender:String;
public var alignment:String;
public var level:Number;
public var hp:Number;
public var xp:Number;
public function writeExternal(output:IDataOutput):void {
output.writeUTF(name);
output.writeUTF(className);
output.writeUTF(race);
output.writeUTF(gender);
output.writeUTF(alignment);
output.writeFloat(level);
output.writeFloat(hp);
output.writeFloat(xp);
}
public function readExternal(input:IDataInput):void {
name = input.readUTF();
className = input.readUTF();
race = input.readUTF();
gender = input.readUTF();
alignment = input.readUTF();
level = input.readFloat();
hp = input.readFloat();
xp = input.readFloat();
}
}
如您所见,大部分代码与我最初发布的代码相同。我添加了 CharacterVO 类,我在 CharactersView.mxml 中移动了一些东西,我将 PersistenceManager 加载代码移动到 insertCharacter 函数(这样,我只在添加新项目时加载 PM,而不是每次我调用数据库.字符)。
同样,我的应用似乎对交互的 react 真的很慢,有时它根本没有反应。有些事情是不对的,我以前从未遇到过移动应用程序的这个问题。可能是将数组存储在 PM 中然后尝试将其设置为列表的 dataProvider 导致了问题吗?
最佳答案
我不太熟悉使用它,但是从文档看来你可能不能使用通用对象,因为我不相信它实现了 IExternalizable,根据文档,这不会导致错误由于某种原因,它实际上无法读取/写入这些对象。
When storing values using the manager, it is important that all values can be properly be written to a shared object. Complex objects that store classes or non-standard flash primitives must implement flash.net.IExternalizable interface to work properly. Saving incompatible objects does not cause an RTE, but creates undefined behavior when the data is read back.
当我自己使用它时,有一次在一个项目上帮助另一个 SO 海报我不记得真的有任何问题,除非我们改变了我们正在存储/检索的模型对象的属性然后我们不得不手动吹走本地共享它正在创建的对象,否则它无法反序列化它(有道理但只是需要注意的事情)。我实际上不记得实现了 IExternalizable,但有可能是其他人实现的。
试试这个:
[CharacterVO.as]
public class CharacterVO implements IExternalizable
{
public var name:String;
public var type:String;
public var strength:Number;
public var speed:Number;
public function writeExternal(output:IDataOutput) {
output.writeUTF(name);
output.writeUTF(type);
output.writeFloat(strength);
output.writeFloat(speed);
}
public function readExternal(input:IDataInput) {
name = input.readUTF();
type = input.readUTF();
strength = input.readFloat();
speed = input.readFloat();
}
}
然后创建该 VO 的实例,而不是创建通用对象。我相信 Array 会通过按顺序序列化它的所有元素来自动序列化。
关于actionscript-3 - flash builder mobile,正确使用 PersistenceManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11744369/
我在 mac 上,我有一个预先存在的 Flash 项目。 (即通常的 fla、src、lib)文件夹。 现在,我想开始使用 Flash Builder 4 编写代码。 如何导入所有这些文件,以便我现在
我在 Flash 视频播放器中遇到了一个奇怪的、很难重现的图形故障!,目前仅在 Chrome 中。 “进入建筑物”下方的灰色矩形显示了 Flash 播放器所在的 html div 的背景颜色。“我们在
我对 Flash 有点陌生,我只是找不到一种很好的方法来控制我添加到容器影片剪辑中的元素的位置。 我所做的是 addChild 到我的目标容器 Movie Clip 和控件 child 的 x,y 值
我是一名 AS3 开发人员,习惯于使用 Flash Builder。我正在与一位使用 Flash Professional 为游戏设计 Sprite 和背景的设计师合作。我希望为我们创建一个集成的工作
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
当您像下面那样在 FLash Builder 中嵌入媒体时,它会创建一个类来引用 [Embed(source="images/list.png")] protected static const LI
有没有办法在 Flash 上本地启用跳帧? 当您开发游戏时,您会开发动画以匹配游戏玩法的节奏,并以目标帧速率(Flash 通常为 24-40fps)进行制作。但是如果用户的电脑速度太慢,无法保持目标帧
大家好,我想知道 AS3 中的 dispatchEvent 是什么。 谷歌搜索时没有任何想法。 :( 所以请帮帮我 编辑1: public static const SET_VOLUME:Strin
我多次听说我应该避免在我的网站上使用 Flash。然而,没有人告诉我这样做的充分理由。我已经搜索了原因,我看到很多不正确的(例如 Flash 中的文本不能被搜索引擎索引),或者不一定是真实的或足够重要
我正在为一个非常大的网站做一些测试,创建了许多不同的开发人员。有没有办法判断网站是否在使用 flash和/或已加载闪存 plugin ?如果页面使用 Flash,有没有办法告诉页面/代码的哪一部分触发
我正在研究“Foundation Actionscript 3.0”一书中的音频播放器演示。当我尝试发布 AudioDemo_final.FLA 文件时,出现以下错误:“Adobe Flash CS3
我有一个特定的FLA,每次尝试编译时都会崩溃(切换到Snow Leopard之后)。 Flash只是停滞不前,我被迫使用“强制退出” ...我不知道是什么原因造成的,并且找不到任何崩溃报告。 Flas
所以我非常熟悉 Java、C 和 C++ 中的内存管理;然而,在闪存中有哪些结构用于内存管理?我假设 flash 有一种像 java 的虚拟机,并且我一直假设当它们被设置为 null 时会被垃圾收集。
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 5年前关闭。 Improve thi
是否可以在 flash 中创建 UDP 套接字连接?我知道 RTMPF,但它不提供对 UDP 的访问。我知道在 AIR 中它是可能的,但我正在寻找一种“闪光”解决方案。 谢谢你 最佳答案 号 UDP
不知道如何表达这个意思,但是我想知道是否可以创建一个全面的错误处理程序来保护整个代码,然后发送给自定义处理程序,该程序在程序中以图形方式输出信息。类似于以下内容: root.addEventListe
我正在尝试创建可在不同场景中使用的UI影片剪辑。 它使用来自根范围的变量来确定状态。 当我按下静音按钮时,效果很好,但是当我尝试取消静音时,就变得很奇怪。有时需要2次点击才能取消静音,有时还需要更多。
是否可以通过麦克风记录最终用户? 我可以用录音做什么 Action ? 例如,我能否实时获得声音(分贝)的音量? 我可以将记录保存到文件中吗? 谢谢。 最佳答案 是的,Flash允许(具有用户许可权)
当我访问我之前在 IE 中构建的站点时,我在浏览器底部弹出消息栏,提示该站点想要运行 Flash。 这很好,除了网站中没有任何 Flash。 什么会导致这种情况? Flash 现在怎么会出现在站点中?
概要 我正在尝试制作一个包含多个相同SWF的网页。我有一个问题,它的加载速度太慢了(虽然下载时间还不错)。我在每个单元格中都有一个4x4表格,在iframe中嵌入了一个swf文件。 (注意:4 X 4
我是一名优秀的程序员,十分优秀!