2017-08-18 1 views
1

J'ai un vecteur pour IP et la liste des ports et la connexion socket, Lorsque la connexion perd je clique sur le bouton et appelle l'IP suivante et le port de la liste des vecteurs.AS3 Comment activer la tête de la liste des vecteurs?

Ma question est quand terminer ma liste comment faire tourner la tête de la liste?

Ce mon code actuel

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; 
    } 
} 

Merci

Répondre

1

Dans la mise en œuvre actuelle, vous pouvez parcourir la liste qu'une seule fois. Vous devez modifier le code pour maintenir la liste non modifiée:

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++]; 
    } 
} 

Maintenant, pour obtenir la première entrée que vous appelez const firstConn:SocketConnection = iterator.first et pour obtenir le reste d'entre eux, juste continuer à appeler iterator.next.

+0

Merci pour réponse! @Nbooo Comment puis-je ajouter auto prochaine sur la liste lorsque je clique sur le bouton reconnecter? – KaraEski

1

Un petit tweak à votre code nécessaire:

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

merci pour la réponse que je résous comme ceci/ 'private var currentIndex: int = 0; public function get next(): SocketConnection { \t \t \t adresse var = _availableAddresses [currentIndex]; \t \t \t currentIndex ++; \t \t \t if (currentIndex> _availableAddresses.length - 1) \t \t \t \t currentIndex = 0; \t \t \t adresse de retour; \t \t} ' – KaraEski

+0

mon autre question ... aide s'il vous plaît https://stackoverflow.com/questions/45755573/as3-how-i-add-auto-next-on-list-when-i-click- connect-again-button merci – KaraEski

+1

@KaraEski Ce n'est pas une question, c'est une demande de code de travail sans montrer ce que vous avez essayé jusqu'ici. – Organis