/ Published in: ActionScript 3
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
package kc.tda { import kc.api.IQueue; import kc.events.CollectionEvent; [Event( name="addAll", type="kc.events.CollectionEvent" )] [Event( name="clear", type="kc.events.CollectionEvent" )] [Event( name="remove", type="kc.events.CollectionEvent" )] [Event( name="removeAll", type="kc.events.CollectionEvent" )] [Event( name="retain", type="kc.events.CollectionEvent" )] [Event( name="enqueue", type="kc.events.CollectionEvent" )] [Event( name="dequeue", type="kc.events.CollectionEvent" )] public class ArrayQueue extends ArrayCollection implements IQueue { // @constructor public function ArrayQueue( capacity:int = undefined, expandableCapacity:Boolean = false, loadFactor:Number = NaN ) { super( capacity, expandableCapacity, loadFactor ); _events = [ CollectionEvent.ADD_ALL, CollectionEvent.CLEAR, CollectionEvent.REMOVE, CollectionEvent.REMOVE_ALL, CollectionEvent.RETAIN, CollectionEvent.ENQUEUE, CollectionEvent.DEQUEUE ]; } // @override override public function add( value:* ):Boolean { return enqueue( value ); } override public function remove( value:* ):Boolean { return ( value != null ) ? super.remove( value ) : ( dequeue() != null ) ? true : false; } // @methods public function element():* { ThrowIsEmpty(); return _records[0]; } public function peek():* { try{ var value:* = element(); }catch(e:Error){ return null; } return value; } public function enqueue( value:* ):Boolean { if( ! ResolveStatus() ) { return false; } var quantity:int = size(); _records.push( value ); if( size() != quantity ){ ResolveDispatchEvent( CollectionEvent.ENQUEUE ); return true; } return false; } public function dequeue():* { var quantity:int = size(); var value:* = _records.shift(); if( size() != quantity ) { ResolveDispatchEvent( CollectionEvent.DEQUEUE ); return value; } return null; } } } // @INTERFACE package kc.api { public interface IQueue extends ICollection { // @methods function element():*; function peek():*; function enqueue(value:*):Boolean; function dequeue():*; } }
URL: http://www.kirikacode.com