SO randomize venue
forked from SO : delete node from query (diff: 100)
ActionScript3 source code
/**
* Copyright pleclech ( http://wonderfl.net/user/pleclech )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/aQ1D
*/
package {
import flash.events.MouseEvent;
import flash.utils.setTimeout;
import com.bit101.components.TextArea;
public class FlashTest extends TextArea {
public function FlashTest() {
width=400
height=400
setTimeout(doTest, 500)
}
public function FisherYatesShuffle(array:Array):void {
}
public function doTest():void {
try {
trace("--- click me ---");
var xml:XML = <gallery>
<venue name='1'>
<name>1</name>
<description>1</description>
<picture>images/1.jpg</picture>
<thumb>thumbs/1.jpg</thumb>
<address>1</address>
<website>http://1.co.uk</website>
</venue>
<venue name='2'>
<name>2</name>
<description>2</description>
<picture>images/2.jpg</picture>
<thumb>thumbs/2.jpg</thumb>
<address>2</address>
<website>http://2.co.uk</website>
</venue>
<venue name='3'>
<name>3</name>
<description>3</description>
<picture>images/3.jpg</picture>
<thumb>thumbs/3.jpg</thumb>
<address>3</address>
<website>http://3.co.uk</website>
</venue>
<venue name='4'>
<name>4</name>
<description>4</description>
<picture>images/4.jpg</picture>
<thumb>thumbs/4.jpg</thumb>
<address>4</address>
<website>http://4.co.uk</website>
</venue>
</gallery>;
var fnShuffle:Function = function(xl:XMLList):Function {
var len:int=xl.length();
var lastUsedIndex:int;
return function(e:MouseEvent):void{
var i:int;
if (len<=0) {
trace("--- new round ---")
len = xl.length();
i = int(Math.random() * (len--));
// in case of a new round you don't want to redisplay the last one again
if (i == lastUsedIndex) i = len;
} else {
i = int(Math.random() * (len--));
}
var myRandomVenue:XML = xl[i];
var tmp:XML = xl[len];
xl[i] = tmp;
xl[len] = myRandomVenue;
lastUsedIndex = len;
trace(myRandomVenue);
trace('name:', myRandomVenue.@name);
}
}
this.addEventListener(MouseEvent.CLICK, fnShuffle(xml.venue));
} catch (e:*) {
trace(e);
}
}
public function trace(...args):void {
text=text+args.join(", ")+"\n"
}
}
}
