- 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/
$.mobile.pageContainer 是指包含其他虚拟页面的元素。它设置为 .所以我认为它可以改变。实际上,某些 JQM 方法 (changePage) 允许您为页面指定非默认页面容器。 J
如何在移动设备上更改方向时触发事件。 调整大小 在 iPod Touch 上运行良好,但在使用 Opera mobile 作为浏览器的移动设备上运行良好。 有关如何在 Opera mobile 上触发
我想为我拥有的装有 Windows Mobile 2003 的设备开发一些应用程序,但我不想为此寻找 Visual Studio 2003 的副本。我想知道是否可以将 Mobile 6 SDK 用于此
我试图阻止 jQuery Mobile 在调用 changePage 时隐藏加载微调器。 程序流程是这样的,从点击一个链接开始,它的点击事件定义如下: $('body').delegate('.lib
我想为运行 Windows Mobile 5 的扫描仪开发应用程序。 MSDN 站点说要下载最新的 SDK(Windows Mobile 6 Professional SDK)。这会起作用还是我应该下
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我正在尝试使用 Jquery mobile 创建弹出菜单,通过单击按钮,它应该在不更改页面的情况下弹出菜单选项,类似于 jquery mobile 的选择菜单。在 JQM 中有没有办法做到这一点? 谢
在移动设备中,当我打开我的页面并选择一个输入框时,虚拟键盘打开,页面自动滚动以将输入框置于中心。 我不想要这个 Action 。 我搜索了很多答案,其中大多数建议在调整大小事件中手动调用以下 java
jQuery 移动列表中是否可以有多个拆分按钮? 我试过这样做: 1 但它不起作用。将链接包装在 中也不行.我做错了什么,
我想从我的 .js 文件中打开 .html 文件。所以我使用了 $.mobile.changePage("file.html")。在file.html 中有file.js。但是 file.js 在调用
我们有许多使用 Windows Mobile 6 的用户,需要应用较小的更改。例如。更新注册表设置。一种选择是使用我们的设备管理软件推送和执行可执行文件。 我希望这对熟悉 VBScript/JScri
我在PHP网站上有一个日期字段,并且我正在使用jQuery Mobile作为移动网站。 在移动浏览器(例如android上的firefox mobile)上浏览网站时,单击日期文本输入时,会出现日历对
我正在构建一个PhoneGap + JQuery Mobile应用程序,但似乎无法阻止它通过双击放大。我按照http://www.tricedesigns.com/2012/01/17/mobile-
随着 jQuery Mobile 1.3 的到来,.navigate()已添加功能。我听说这是更改页面的推荐方法,似乎他们解决了在页面之间传输数据的问题。 问题是,既然已经简化了,我该如何访问 cha
我想得到一个 input文本区域和 submit按钮附在它的右侧。 理想情况下,两者将使用 100% 的宽度并且并排放置。 我一直在尝试玩弄ui-grid-a和类似的选择,但一切都失败了。你可以看到一
我正在使用 jquery-mobile,我有这两个按钮: Pro: Reset 我希望它们并排显示(内联)。但我想不通。我做了this但它不起作用。你能帮我吗 ?这是我的 CSS:
我正在为 Windows Mobile 6.5 (Samsung Omnia II i8000) 开发 native 应用程序。进行一些更改后,我的应用程序在运行时挂起。 问题是我的应用程序也在启动期
有没有办法从周围和图标中删除背景光盘(圆圈)?我找到的光盘的唯一引用如下 background: rgba(0,0,0,.4) /*{global-ic
jQuery 移动版虽然在很多方面都很棒,但有时也令人沮丧。在这种情况下,我试图动态创建库中非常好的按钮之一。 基本上我想要做的是在输入字段中输入文本,当按下空格键时,它会创建一个带有文本的 jQue
我想在我的第 2 页上显示标题。使用以下内容是否有效: "> .... ? 最佳答案 这取决于你定义什么为“有效”
我是一名优秀的程序员,十分优秀!