-1

おはようございます!これは、「Adobe Flash Professional CS5.5 および Flash Builder 4.5 を使用したモバイル開発」チュートリアルから入手した基本的なコードです。かなり基本的なコードですが、それらのろくでなしは DELETE 機能に関する情報を提供しませんでした。これは初めてのアプリケーションなので、助けが必要です!

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           height="494" creationComplete="readFile()"> 
<fx:Script> 
<![CDATA[ 


import mx.collections.ArrayCollection; 
[Bindable] public var todo_items:ArrayCollection;     
private function readFile():void 
{ 
    var todoFile:File =File.applicationStorageDirectory.resolvePath("todo.txt"); 

    if (todoFile.exists) 
    { 
        var fs:FileStream = new FileStream(); 
        fs.open(todoFile, FileMode.READ); 
        var result:String = fs.readUTFBytes(fs.bytesAvailable); 
        var items:Array = result.split("\n"); 
        items.pop(); 
        todo_items = new ArrayCollection(items); 
        fs.close(); 
    } 
    else { trace("Aplication cant find the file"); 
    } 
 } 
    private function writeFile():void 
    { 
        var todoFile:File = File.applicationStorageDirectory.resolvePath("todo.txt"); 


            var fs:FileStream = new FileStream(); 
            fs.open(todoFile, FileMode.APPEND); 


            fs.writeUTFBytes(task_txt.text + "\n"); 


            fs.close(); 
            readFile(); 
    } 
    private function deleteFile():void 
    { 
        //????????????? HEEEEELP         !!!!!!!!!! 
    } 

]]> 
</fx:Script> 


<s:List id="todo_list" left="10" right="10" top="146" bottom="87"       dataProvider="{todo_items}"/> 
<s:Button left="11" right="10" top="69" height="65" label="Save task" click="writeFile()" 
          enabled="{task_txt.text.length > 0}"/> 
<s:TextInput id="task_txt" left="10" right="10" top="10" height="51" prompt="Specify a task"/> 
<s:Button left="10" right="10" bottom="14" label="Delete" 
          click="todo_items.removeItemAt(todo_list.selectedIndex); deleteFile()" 
                        enabled="{todo_list.selectedIndex != -1}"/> 

4

2 に答える 2

0

あなたがしたいことは

  1. readFile が行っているように、ファイルからすべてのデータを読み込みます。
  2. 削除したい行をそのデータから削除します。
  3. データをファイルに書き戻します - writeFile が行っているように -FileMode.WRITEモードで、追加ではなく上書きするようにします。

これを完全に理解できず、ガイドの代わりにコードが必要な場合は、お気軽にここにコメントしてください。単なるポインタ以上のものを提供します.


readFile のコード (すべて) は、ファイルから ArrayCollection という名前のデータを読み込みますtodo_items

ファイルから項目を削除したい場合は、その ArrayCollection (のようなものtodo_items.removeItemAt(index)) から項目を削除します。

これで、ファイルに入れたいデータを含む ArrayCollection ができました。この時点で、writeFile() が行っていることを模倣する必要がありますが、FileMode.WRITE を使用して、追加するテキスト ボックス内の 1 つの項目ではなく、リスト内のすべての項目を書き出す必要があります。

private function deleteFile():void 
{ 
    var todoFile:File = File.applicationStorageDirectory.resolvePath("todo.txt"); 


        var fs:FileStream = new FileStream(); 
        fs.open(todoFile, FileMode.WRITE); 

        for(var item:String in todo_items)
        {
            fs.writeUTFBytes(item + "\n")
        }

        fs.close(); 
        readFile(); 
} 

やや関連するメモ-「deleteFile」は、ここで行っていることの適切な名前ではないと思います。deleteItem()選択したアイテムを削除するメソッドが必要になる場合があります。その後、saveFile()上記のコードを含むメソッドが必要になる場合があります。

于 2012-07-23T14:27:04.803 に答える
-1

deleteFile メソッドはファイルを削除するためのものだと思いますか? もしそうなら、アドビのリファレンスはFileクラスと削除を文書化しています。これは通常、クラスを調べるときに始めるのに適した場所です。

private function deleteFile():void 
{ 
       var todoFile:File = File.applicationStorageDirectory.resolvePath("todo.txt"); 
       todoFile.deleteFile()
} 
于 2012-07-23T14:21:27.180 に答える