2017-08-18 11 views
1

私はIPとポートのリストとソケット接続のためのベクトルを持っています、接続が私はボタンをクリックし、ベクトルリストから次のIPとポートをクリックします。AS3ベクターリストの先頭に戻るには?

私の質問は、私のリストを完成させるとき、私はリストの頭をどのように回すのですか?現在の実装で

この私の現在のコード

public class UriIterator 
{ 
    private var _availableAddresses: Vector.<SocketConnection> = new Vector.<SocketConnection>(); 


    public function UriIterator() 
    { 

    } 


    public function withAddress(host: String, port: int): UriIterator { 
     const a: SocketConnection = new SocketConnection(host, port); 
     _availableAddresses.push(a); 
     return this; 
    } 

    public function get next(): SocketConnection{ 
     return _availableAddresses.length ? _availableAddresses.pop() : null; 
    } 
} 

おかげ

答えて

1

あなたは一度だけリストをトラバースすることができます。あなたは未修正のリストを維持するためにコードを変更する必要があります。

public class UriIterator 
{ 
    private var _currentIndex:int = 0; 
    private var _availableAddresses: Vector.<SocketConnection> = new Vector.<SocketConnection>(); 


    public function withAddress(host: String, port: int): UriIterator { 
     const a: SocketConnection = new SocketConnection(host, port); 
     _availableAddresses.push(a); 
     return this; 
    } 

    public function get first():SocketConnection { 
     _currentIndex = 0; 
     if (_currentIndex >= _availableAddresses.length) 
      return null; 
     return _availableAddresses[_currentIndex++]; 
    } 

    public function get next(): SocketConnection { 
     if (_currentIndex >= _availableAddresses.length) 
      return null; 
     return _availableAddresses[_currentIndex++]; 
    } 
} 

が今だけ iterator.nextを呼び出し続ける、あなたが const firstConn:SocketConnection = iterator.first呼び出し、それらの残りの部分を取得するために最初のエントリを取得します。あなたのコードに

+0

感謝を! @Nbooo [再接続]ボタンをクリックすると、リストに自動次を追加する方法はありますか? – KaraEski

1

小さな微調整が必​​要:回答について

public function get next():SocketConnection 
{ 
    // Get the next one. 
    var result:SocketConnection = _availableAddresses.pop(); 

    // Put it back at the other end of the list. 
    _availableAddresses.unshift(result); 

    return result; 
} 
+0

回答ありがとうございます。このように解決します/ 'private var currentIndex:int = 0; public function get next():SocketConnection { \t \t \t var address = _availableAddresses [currentIndex]; \t \t \t currentIndex ++; \t \t \t IF(currentIndex> _availableAddresses.length - 1) \t \t \t \t currentIndex = 0。 \t \t \tリターンアドレス; \t \t} – KaraEski

+0

私の他の質問助けてください... https://stackoverflow.com/questions/45755573/as3-how-i-add-auto-next-on-list-when-i-click-再接続ボタン ありがとう – KaraEski

+1

@ KaraEskiこれは質問ではありません。あなたがこれまでに試したことを示すことなく、作業コードの要求です。 – Organis

関連する問題