我正在为ios创建一个简单的列表应用程序,您可以在其中输入一个文本字符串并将其作为列表项添加到List组件中。出于测试目的,我目前只是使用单击按钮通过AS将项目添加到列表组件。
我希望能够保存我正在写入列表的内容,并且我一直在尝试使用SharedObject.getLocal(“mySharedObject”)来完成它。方法。
这是我当前的代码(我在.FLA文件中使用AS3):
import fl.controls.List;
import fl.data.DataProvider;
import fl.events.ListEvent;
var saveListObject:SharedObject;
var Question_list: List = new List();
Question_list.setSize(320, 390);
Question_list.move(0, 0);
addChild(Question_list);
init();
function init(): void {
saveListObject = SharedObject.getLocal("test");
btnSave.addEventListener(MouseEvent.CLICK, saveList);
if(saveListObject.data.savedList == null){
trace("No saved list yet.");
saveListObject.data.savedList = Question_list.addItem;
} else {
trace("Saved list found.");
loadList();
}
}
addTextBtn.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
function fl_MouseClickHandler(event: MouseEvent): void {
trace("Mouse clicked");
Question_list.addItem({
label: "New item"
});
}
function saveList(e:MouseEvent):void{
saveListObject.data.savedList = Question_list.dataProvider;
trace("List Saved!");
saveListObject.flush();
trace(saveListObject.size);
}
function loadList():void{
Question_list.removeAll();
for (var p in saveListObject.data) {
Question_list.addItem(saveListObject.data.savedList);
}
trace("List Loaded!");
trace(Question_list.dataProvider);
}
在我的时间轴上,我有一个addTextBtn和一个btnSave。 我的列表组件名为Question_list。 saveListObject是我的SharedObject。
我设法成功保存和加载,但似乎我正在加载的数据未被Question_list正确读取。我可以添加尽可能多的列表项,当我再次打开.swf是一(1)个空白列表项时,我得到的所有列表项。我怀疑我将所有列表数据保存到一个数组中,我无法将其加载回带有标签的不同列表项。 (我正在使用标签显示Question_list中的文字)
我希望这里有人能以正确的方式指导我。
非常感谢!
答案 0 :(得分:0)
问题是如何访问SharedObject。你有:
saveListObject.data.savedList = value;
我会用:
saveListObject.data [" savedList"] = value;
希望有所帮助
答案 1 :(得分:0)
您的问题是listLoad()
功能。
function loadList():void{
Question_list.removeAll();
for (var p in saveListObject.data) {
Question_list.addItem(saveListObject.data.savedList);
}
trace("List Loaded!");
trace(Question_list.dataProvider);
}
具体来说,Question_list.addItem(saveListObject.data.savedList);
savedList
是一个包含整个已保存列表的对象,而Question_list.addItem()
只会添加一个项目。因此,您创建一个新的列表条目,表示您的所有数据。
我建议改变你的循环:
for each(var p in saveListObject.data.savedList) {
Question_list.addItem(p);
}
这将逐个拉出已保存列表的每一行,并将其添加到屏幕列表中。