STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228088
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2561 · P5121

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/45694923?noj=FRM45694923-3DC" width="1" height="1"></div>

5a427b165056900b103da674e927f237 by OMGKavra.swf

This is the info page for
Flash #207994

(Click the ID number above for more basic data on this flash file.)


Text
<p align="center"></p>

Join Me for Hot Chocolate?

<p align="center"></p>

<p align="center"></p>

© 2012 Hasbro

ActionScript [AS3]

Section 1
//cancel_btn_14 (cnc_fla.cancel_btn_14) package cnc_fla { import flash.display.*; import flash.events.*; public dynamic class cancel_btn_14 extends MovieClip { public function cancel_btn_14(){ super(); addFrameScript(0, frame1); } public function onReleased(e:MouseEvent):void{ gotoAndStop(2); } public function onPressed(e:MouseEvent):void{ gotoAndStop(3); } function frame1(){ stop(); addEventListener(MouseEvent.MOUSE_OVER, onRolled); addEventListener(MouseEvent.MOUSE_OUT, onRolledOut); addEventListener(MouseEvent.MOUSE_DOWN, onPressed); addEventListener(MouseEvent.MOUSE_UP, onReleased); } public function onRolled(e:MouseEvent):void{ gotoAndStop(2); } public function onRolledOut(e:MouseEvent):void{ gotoAndStop(1); } } }//package cnc_fla
Section 2
//ok_btn_15 (cnc_fla.ok_btn_15) package cnc_fla { import flash.display.*; import flash.events.*; public dynamic class ok_btn_15 extends MovieClip { public function ok_btn_15(){ super(); addFrameScript(0, frame1); } public function onReleased(e:MouseEvent):void{ gotoAndStop(2); } public function onPressed(e:MouseEvent):void{ gotoAndStop(3); } function frame1(){ stop(); addEventListener(MouseEvent.MOUSE_OVER, onRolled); addEventListener(MouseEvent.MOUSE_OUT, onRolledOut); addEventListener(MouseEvent.MOUSE_DOWN, onPressed); addEventListener(MouseEvent.MOUSE_UP, onReleased); } public function onRolled(e:MouseEvent):void{ gotoAndStop(2); } public function onRolledOut(e:MouseEvent):void{ gotoAndStop(1); } } }//package cnc_fla
Section 3
//windowTab_21 (cnc_fla.windowTab_21) package cnc_fla { import flash.display.*; import flash.text.*; public dynamic class windowTab_21 extends MovieClip { public var label:TextField; public function windowTab_21(){ super(); } } }//package cnc_fla
Section 4
//BitString (com.adobe.images.BitString) package com.adobe.images { public class BitString { public var val:int;// = 0 public var len:int;// = 0 public function BitString(){ len = 0; val = 0; super(); } } }//package com.adobe.images
Section 5
//JPGEncoder (com.adobe.images.JPGEncoder) package com.adobe.images { import flash.display.*; import flash.utils.*; import flash.geom.*; public class JPGEncoder { private var fdtbl_UV:Array; private var std_ac_chrominance_values:Array; private var std_dc_chrominance_nrcodes:Array; private var std_dc_chrominance_values:Array; private var ZigZag:Array; private var YDC_HT:Array; private var bytenew:int;// = 0 private var fdtbl_Y:Array; private var YAC_HT:Array; private var std_ac_chrominance_nrcodes:Array; private var DU:Array; private var std_ac_luminance_values:Array; private var UVTable:Array; private var UDU:Array; private var YDU:Array; private var byteout:ByteArray; private var UVAC_HT:Array; private var UVDC_HT:Array; private var bytepos:int;// = 7 private var VDU:Array; private var std_ac_luminance_nrcodes:Array; private var std_dc_luminance_values:Array; private var YTable:Array; private var std_dc_luminance_nrcodes:Array; private var bitcode:Array; private var category:Array; public function JPGEncoder(quality:Number=50){ var sf:int; ZigZag = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63]; YTable = new Array(64); UVTable = new Array(64); fdtbl_Y = new Array(64); fdtbl_UV = new Array(64); std_dc_luminance_nrcodes = [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]; std_dc_luminance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; std_ac_luminance_nrcodes = [0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125]; std_ac_luminance_values = [1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250]; std_dc_chrominance_nrcodes = [0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]; std_dc_chrominance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; std_ac_chrominance_nrcodes = [0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119]; std_ac_chrominance_values = [0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250]; bitcode = new Array(0xFFFF); category = new Array(0xFFFF); bytenew = 0; bytepos = 7; DU = new Array(64); YDU = new Array(64); UDU = new Array(64); VDU = new Array(64); super(); if (quality <= 0){ quality = 1; }; if (quality > 100){ quality = 100; }; sf = 0; if (quality < 50){ sf = int((5000 / quality)); } else { sf = int((200 - (quality * 2))); }; initHuffmanTbl(); initCategoryNumber(); initQuantTables(sf); } private function RGB2YUV(img:BitmapData, xpos:int, ypos:int):void{ var pos:int; var y:int; var x:int; var P:uint; var R:Number; var G:Number; var B:Number; pos = 0; y = 0; while (y < 8) { x = 0; while (x < 8) { P = img.getPixel32((xpos + x), (ypos + y)); R = Number(((P >> 16) & 0xFF)); G = Number(((P >> 8) & 0xFF)); B = Number((P & 0xFF)); YDU[pos] = ((((0.299 * R) + (0.587 * G)) + (0.114 * B)) - 128); UDU[pos] = (((-0.16874 * R) + (-0.33126 * G)) + (0.5 * B)); VDU[pos] = (((0.5 * R) + (-0.41869 * G)) + (-0.08131 * B)); pos++; x++; }; y++; }; } private function writeWord(value:int):void{ writeByte(((value >> 8) & 0xFF)); writeByte((value & 0xFF)); } private function writeByte(value:int):void{ byteout.writeByte(value); } private function writeDHT():void{ var i:int; writeWord(65476); writeWord(418); writeByte(0); i = 0; while (i < 16) { writeByte(std_dc_luminance_nrcodes[(i + 1)]); i++; }; i = 0; while (i <= 11) { writeByte(std_dc_luminance_values[i]); i++; }; writeByte(16); i = 0; while (i < 16) { writeByte(std_ac_luminance_nrcodes[(i + 1)]); i++; }; i = 0; while (i <= 161) { writeByte(std_ac_luminance_values[i]); i++; }; writeByte(1); i = 0; while (i < 16) { writeByte(std_dc_chrominance_nrcodes[(i + 1)]); i++; }; i = 0; while (i <= 11) { writeByte(std_dc_chrominance_values[i]); i++; }; writeByte(17); i = 0; while (i < 16) { writeByte(std_ac_chrominance_nrcodes[(i + 1)]); i++; }; i = 0; while (i <= 161) { writeByte(std_ac_chrominance_values[i]); i++; }; } private function writeBits(bs:BitString):void{ var value:int; var posval:int; value = bs.val; posval = (bs.len - 1); while (posval >= 0) { if ((value & uint((1 << posval)))){ bytenew = (bytenew | uint((1 << bytepos))); }; posval--; bytepos--; if (bytepos < 0){ if (bytenew == 0xFF){ writeByte(0xFF); writeByte(0); } else { writeByte(bytenew); }; bytepos = 7; bytenew = 0; }; }; } private function initHuffmanTbl():void{ YDC_HT = computeHuffmanTbl(std_dc_luminance_nrcodes, std_dc_luminance_values); UVDC_HT = computeHuffmanTbl(std_dc_chrominance_nrcodes, std_dc_chrominance_values); YAC_HT = computeHuffmanTbl(std_ac_luminance_nrcodes, std_ac_luminance_values); UVAC_HT = computeHuffmanTbl(std_ac_chrominance_nrcodes, std_ac_chrominance_values); } public function encode(image:BitmapData):ByteArray{ var DCY:Number; var DCU:Number; var DCV:Number; var ypos:int; var xpos:int; var fillbits:BitString; byteout = new ByteArray(); bytenew = 0; bytepos = 7; writeWord(65496); writeAPP0(); writeDQT(); writeSOF0(image.width, image.height); writeDHT(); writeSOS(); DCY = 0; DCU = 0; DCV = 0; bytenew = 0; bytepos = 7; ypos = 0; while (ypos < image.height) { xpos = 0; while (xpos < image.width) { RGB2YUV(image, xpos, ypos); DCY = processDU(YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT); DCU = processDU(UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); DCV = processDU(VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); xpos = (xpos + 8); }; ypos = (ypos + 8); }; if (bytepos >= 0){ fillbits = new BitString(); fillbits.len = (bytepos + 1); fillbits.val = ((1 << (bytepos + 1)) - 1); writeBits(fillbits); }; writeWord(65497); return (byteout); } private function initCategoryNumber():void{ var nrlower:int; var nrupper:int; var nr:int; var cat:int; nrlower = 1; nrupper = 2; cat = 1; while (cat <= 15) { nr = nrlower; while (nr < nrupper) { category[(32767 + nr)] = cat; bitcode[(32767 + nr)] = new BitString(); bitcode[(32767 + nr)].len = cat; bitcode[(32767 + nr)].val = nr; nr++; }; nr = -((nrupper - 1)); while (nr <= -(nrlower)) { category[(32767 + nr)] = cat; bitcode[(32767 + nr)] = new BitString(); bitcode[(32767 + nr)].len = cat; bitcode[(32767 + nr)].val = ((nrupper - 1) + nr); nr++; }; nrlower = (nrlower << 1); nrupper = (nrupper << 1); cat++; }; } private function writeDQT():void{ var i:int; writeWord(65499); writeWord(132); writeByte(0); i = 0; while (i < 64) { writeByte(YTable[i]); i++; }; writeByte(1); i = 0; while (i < 64) { writeByte(UVTable[i]); i++; }; } private function writeAPP0():void{ writeWord(65504); writeWord(16); writeByte(74); writeByte(70); writeByte(73); writeByte(70); writeByte(0); writeByte(1); writeByte(1); writeByte(0); writeWord(1); writeWord(1); writeByte(0); writeByte(0); } private function writeSOS():void{ writeWord(65498); writeWord(12); writeByte(3); writeByte(1); writeByte(0); writeByte(2); writeByte(17); writeByte(3); writeByte(17); writeByte(0); writeByte(63); writeByte(0); } private function processDU(CDU:Array, fdtbl:Array, DC:Number, HTDC:Array, HTAC:Array):Number{ var EOB:BitString; var M16zeroes:BitString; var i:int; var DU_DCT:Array; var Diff:int; var end0pos:int; var startpos:int; var nrzeroes:int; var nrmarker:int; EOB = HTAC[0]; M16zeroes = HTAC[240]; DU_DCT = fDCTQuant(CDU, fdtbl); i = 0; while (i < 64) { DU[ZigZag[i]] = DU_DCT[i]; i++; }; Diff = (DU[0] - DC); DC = DU[0]; if (Diff == 0){ writeBits(HTDC[0]); } else { writeBits(HTDC[category[(32767 + Diff)]]); writeBits(bitcode[(32767 + Diff)]); }; end0pos = 63; while ((((end0pos > 0)) && ((DU[end0pos] == 0)))) { end0pos--; }; if (end0pos == 0){ writeBits(EOB); return (DC); }; i = 1; while (i <= end0pos) { startpos = i; while ((((DU[i] == 0)) && ((i <= end0pos)))) { i++; }; nrzeroes = (i - startpos); if (nrzeroes >= 16){ nrmarker = 1; while (nrmarker <= (nrzeroes / 16)) { writeBits(M16zeroes); nrmarker++; }; nrzeroes = int((nrzeroes & 15)); }; writeBits(HTAC[((nrzeroes * 16) + category[(32767 + DU[i])])]); writeBits(bitcode[(32767 + DU[i])]); i++; }; if (end0pos != 63){ writeBits(EOB); }; return (DC); } private function initQuantTables(sf:int):void{ var i:int; var t:Number; var YQT:Array; var UVQT:Array; var aasf:Array; var row:int; var col:int; YQT = [16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99]; i = 0; while (i < 64) { t = Math.floor((((YQT[i] * sf) + 50) / 100)); if (t < 1){ t = 1; } else { if (t > 0xFF){ t = 0xFF; }; }; YTable[ZigZag[i]] = t; i++; }; UVQT = [17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99]; i = 0; while (i < 64) { t = Math.floor((((UVQT[i] * sf) + 50) / 100)); if (t < 1){ t = 1; } else { if (t > 0xFF){ t = 0xFF; }; }; UVTable[ZigZag[i]] = t; i++; }; aasf = [1, 1.387039845, 1.306562965, 1.175875602, 1, 0.785694958, 0.5411961, 0.275899379]; i = 0; row = 0; while (row < 8) { col = 0; while (col < 8) { fdtbl_Y[i] = (1 / (((YTable[ZigZag[i]] * aasf[row]) * aasf[col]) * 8)); fdtbl_UV[i] = (1 / (((UVTable[ZigZag[i]] * aasf[row]) * aasf[col]) * 8)); i++; col++; }; row++; }; } private function writeSOF0(width:int, height:int):void{ writeWord(65472); writeWord(17); writeByte(8); writeWord(height); writeWord(width); writeByte(3); writeByte(1); writeByte(17); writeByte(0); writeByte(2); writeByte(17); writeByte(1); writeByte(3); writeByte(17); writeByte(1); } private function computeHuffmanTbl(nrcodes:Array, std_table:Array):Array{ var codevalue:int; var pos_in_table:int; var HT:Array; var k:int; var j:int; codevalue = 0; pos_in_table = 0; HT = new Array(); k = 1; while (k <= 16) { j = 1; while (j <= nrcodes[k]) { HT[std_table[pos_in_table]] = new BitString(); HT[std_table[pos_in_table]].val = codevalue; HT[std_table[pos_in_table]].len = k; pos_in_table++; codevalue++; j++; }; codevalue = (codevalue * 2); k++; }; return (HT); } private function fDCTQuant(data:Array, fdtbl:Array):Array{ var tmp0:Number; var tmp1:Number; var tmp2:Number; var tmp3:Number; var tmp4:Number; var tmp5:Number; var tmp6:Number; var tmp7:Number; var tmp10:Number; var tmp11:Number; var tmp12:Number; var tmp13:Number; var z1:Number; var z2:Number; var z3:Number; var z4:Number; var z5:Number; var z11:Number; var z13:Number; var i:int; var dataOff:int; dataOff = 0; i = 0; while (i < 8) { tmp0 = (data[(dataOff + 0)] + data[(dataOff + 7)]); tmp7 = (data[(dataOff + 0)] - data[(dataOff + 7)]); tmp1 = (data[(dataOff + 1)] + data[(dataOff + 6)]); tmp6 = (data[(dataOff + 1)] - data[(dataOff + 6)]); tmp2 = (data[(dataOff + 2)] + data[(dataOff + 5)]); tmp5 = (data[(dataOff + 2)] - data[(dataOff + 5)]); tmp3 = (data[(dataOff + 3)] + data[(dataOff + 4)]); tmp4 = (data[(dataOff + 3)] - data[(dataOff + 4)]); tmp10 = (tmp0 + tmp3); tmp13 = (tmp0 - tmp3); tmp11 = (tmp1 + tmp2); tmp12 = (tmp1 - tmp2); data[(dataOff + 0)] = (tmp10 + tmp11); data[(dataOff + 4)] = (tmp10 - tmp11); z1 = ((tmp12 + tmp13) * 0.707106781); data[(dataOff + 2)] = (tmp13 + z1); data[(dataOff + 6)] = (tmp13 - z1); tmp10 = (tmp4 + tmp5); tmp11 = (tmp5 + tmp6); tmp12 = (tmp6 + tmp7); z5 = ((tmp10 - tmp12) * 0.382683433); z2 = ((0.5411961 * tmp10) + z5); z4 = ((1.306562965 * tmp12) + z5); z3 = (tmp11 * 0.707106781); z11 = (tmp7 + z3); z13 = (tmp7 - z3); data[(dataOff + 5)] = (z13 + z2); data[(dataOff + 3)] = (z13 - z2); data[(dataOff + 1)] = (z11 + z4); data[(dataOff + 7)] = (z11 - z4); dataOff = (dataOff + 8); i++; }; dataOff = 0; i = 0; while (i < 8) { tmp0 = (data[(dataOff + 0)] + data[(dataOff + 56)]); tmp7 = (data[(dataOff + 0)] - data[(dataOff + 56)]); tmp1 = (data[(dataOff + 8)] + data[(dataOff + 48)]); tmp6 = (data[(dataOff + 8)] - data[(dataOff + 48)]); tmp2 = (data[(dataOff + 16)] + data[(dataOff + 40)]); tmp5 = (data[(dataOff + 16)] - data[(dataOff + 40)]); tmp3 = (data[(dataOff + 24)] + data[(dataOff + 32)]); tmp4 = (data[(dataOff + 24)] - data[(dataOff + 32)]); tmp10 = (tmp0 + tmp3); tmp13 = (tmp0 - tmp3); tmp11 = (tmp1 + tmp2); tmp12 = (tmp1 - tmp2); data[(dataOff + 0)] = (tmp10 + tmp11); data[(dataOff + 32)] = (tmp10 - tmp11); z1 = ((tmp12 + tmp13) * 0.707106781); data[(dataOff + 16)] = (tmp13 + z1); data[(dataOff + 48)] = (tmp13 - z1); tmp10 = (tmp4 + tmp5); tmp11 = (tmp5 + tmp6); tmp12 = (tmp6 + tmp7); z5 = ((tmp10 - tmp12) * 0.382683433); z2 = ((0.5411961 * tmp10) + z5); z4 = ((1.306562965 * tmp12) + z5); z3 = (tmp11 * 0.707106781); z11 = (tmp7 + z3); z13 = (tmp7 - z3); data[(dataOff + 40)] = (z13 + z2); data[(dataOff + 24)] = (z13 - z2); data[(dataOff + 8)] = (z11 + z4); data[(dataOff + 56)] = (z11 - z4); dataOff++; i++; }; i = 0; while (i < 64) { data[i] = Math.round((data[i] * fdtbl[i])); i++; }; return (data); } } }//package com.adobe.images
Section 6
//PNGEncoder (com.adobe.images.PNGEncoder) package com.adobe.images { import flash.display.*; import flash.utils.*; public class PNGEncoder { private static var crcTableComputed:Boolean = false; private static var crcTable:Array; public function PNGEncoder(){ super(); } private static function writeChunk(png:ByteArray, type:uint, data:ByteArray):void{ var len:uint; var p:uint; var e:uint; var i:int; var c:uint; var n:uint; var k:uint; if (!crcTableComputed){ crcTableComputed = true; crcTable = []; n = 0; while (n < 0x0100) { c = n; k = 0; while (k < 8) { if ((c & 1)){ c = uint((uint(3988292384) ^ uint((c >>> 1)))); } else { c = uint((c >>> 1)); }; k++; }; crcTable[n] = c; n++; }; }; len = 0; if (data != null){ len = data.length; }; png.writeUnsignedInt(len); p = png.position; png.writeUnsignedInt(type); if (data != null){ png.writeBytes(data); }; e = png.position; png.position = p; c = 4294967295; i = 0; while (i < (e - p)) { c = uint((crcTable[((c ^ png.readUnsignedByte()) & uint(0xFF))] ^ uint((c >>> 8)))); i++; }; c = uint((c ^ uint(4294967295))); png.position = e; png.writeUnsignedInt(c); } public static function encode(img:BitmapData):ByteArray{ var png:ByteArray; var IHDR:ByteArray; var IDAT:ByteArray; var i:int; var p:uint; var j:int; png = new ByteArray(); png.writeUnsignedInt(2303741511); png.writeUnsignedInt(218765834); IHDR = new ByteArray(); IHDR.writeInt(img.width); IHDR.writeInt(img.height); IHDR.writeUnsignedInt(134610944); IHDR.writeByte(0); writeChunk(png, 1229472850, IHDR); IDAT = new ByteArray(); i = 0; while (i < img.height) { IDAT.writeByte(0); if (!img.transparent){ j = 0; while (j < img.width) { p = img.getPixel(j, i); IDAT.writeUnsignedInt(uint((((p & 0xFFFFFF) << 8) | 0xFF))); j++; }; } else { j = 0; while (j < img.width) { p = img.getPixel32(j, i); IDAT.writeUnsignedInt(uint((((p & 0xFFFFFF) << 8) | (p >>> 24)))); j++; }; }; i++; }; IDAT.compress(); writeChunk(png, 1229209940, IDAT); writeChunk(png, 1229278788, null); return (png); } } }//package com.adobe.images
Section 7
//JSON (com.adobe.serialization.json.JSON) package com.adobe.serialization.json { public class JSON { public function JSON(){ super(); } public static function decode(s:String){ var decoder:JSONDecoder; decoder = new JSONDecoder(s); return (decoder.getValue()); } public static function encode(o:Object):String{ var encoder:JSONEncoder; encoder = new JSONEncoder(o); return (encoder.getString()); } } }//package com.adobe.serialization.json
Section 8
//JSONDecoder (com.adobe.serialization.json.JSONDecoder) package com.adobe.serialization.json { public class JSONDecoder { private var value; private var tokenizer:JSONTokenizer; private var token:JSONToken; public function JSONDecoder(s:String){ super(); tokenizer = new JSONTokenizer(s); nextToken(); value = parseValue(); } private function nextToken():JSONToken{ return ((token = tokenizer.getNextToken())); } private function parseObject():Object{ var o:Object; var key:String; o = new Object(); nextToken(); if (token.type == JSONTokenType.RIGHT_BRACE){ return (o); }; while (true) { if (token.type == JSONTokenType.STRING){ key = String(token.value); nextToken(); if (token.type == JSONTokenType.COLON){ nextToken(); o[key] = parseValue(); nextToken(); if (token.type == JSONTokenType.RIGHT_BRACE){ return (o); }; if (token.type == JSONTokenType.COMMA){ nextToken(); } else { tokenizer.parseError(("Expecting } or , but found " + token.value)); }; } else { tokenizer.parseError(("Expecting : but found " + token.value)); }; } else { tokenizer.parseError(("Expecting string but found " + token.value)); }; }; return (null); } private function parseArray():Array{ var a:Array; a = new Array(); nextToken(); if (token.type == JSONTokenType.RIGHT_BRACKET){ return (a); }; while (true) { a.push(parseValue()); nextToken(); if (token.type == JSONTokenType.RIGHT_BRACKET){ return (a); }; if (token.type == JSONTokenType.COMMA){ nextToken(); } else { tokenizer.parseError(("Expecting ] or , but found " + token.value)); }; }; return (null); } public function getValue(){ return (value); } private function parseValue():Object{ if (token == null){ tokenizer.parseError("Unexpected end of input"); }; switch (token.type){ case JSONTokenType.LEFT_BRACE: return (parseObject()); case JSONTokenType.LEFT_BRACKET: return (parseArray()); case JSONTokenType.STRING: case JSONTokenType.NUMBER: case JSONTokenType.TRUE: case JSONTokenType.FALSE: case JSONTokenType.NULL: return (token.value); default: tokenizer.parseError(("Unexpected " + token.value)); }; return (null); } } }//package com.adobe.serialization.json
Section 9
//JSONEncoder (com.adobe.serialization.json.JSONEncoder) package com.adobe.serialization.json { import flash.utils.*; public class JSONEncoder { private var jsonString:String; public function JSONEncoder(value){ super(); jsonString = convertToString(value); } private function arrayToString(a:Array):String{ var s:String; var i:int; s = ""; i = 0; while (i < a.length) { if (s.length > 0){ s = (s + ","); }; s = (s + convertToString(a[i])); i++; }; return ((("[" + s) + "]")); } private function convertToString(value):String{ if ((value is String)){ return (escapeString((value as String))); }; if ((value is Number)){ return ((isFinite((value as Number))) ? value.toString() : "null"); } else { if ((value is Boolean)){ return ((value) ? "true" : "false"); } else { if ((value is Array)){ return (arrayToString((value as Array))); }; if ((((value is Object)) && (!((value == null))))){ return (objectToString(value)); }; }; }; return ("null"); } private function escapeString(str:String):String{ var s:String; var ch:String; var len:Number; var i:int; var hexCode:String; var zeroPad:String; s = ""; len = str.length; i = 0; while (i < len) { ch = str.charAt(i); switch (ch){ case "\"": s = (s + "\\\""); break; case "\\": s = (s + "\\\\"); break; case "\b": s = (s + "\\b"); break; case "\f": s = (s + "\\f"); break; case "\n": s = (s + "\\n"); break; case "\r": s = (s + "\\r"); break; case "\t": s = (s + "\\t"); break; default: if (ch < " "){ hexCode = ch.charCodeAt(0).toString(16); zeroPad = ((hexCode.length == 2)) ? "00" : "000"; s = (s + (("\\u" + zeroPad) + hexCode)); } else { s = (s + ch); }; }; i++; }; return ((("\"" + s) + "\"")); } private function objectToString(o:Object):String{ var s:String; var classInfo:XML; var value:Object; var key:String; var v:XML; var o = o; s = ""; classInfo = describeType(o); if (classInfo.@name.toString() == "Object"){ for (key in o) { value = o[key]; if ((value is Function)){ } else { if (s.length > 0){ s = (s + ","); }; s = (s + ((escapeString(key) + ":") + convertToString(value))); }; }; } else { for each (v in classInfo..*.(((name() == "variable")) || ((name() == "accessor")))) { if (s.length > 0){ s = (s + ","); }; s = (s + ((escapeString(v.@name.toString()) + ":") + convertToString(o[v.@name]))); }; }; return ((("{" + s) + "}")); } public function getString():String{ return (jsonString); } } }//package com.adobe.serialization.json
Section 10
//JSONParseError (com.adobe.serialization.json.JSONParseError) package com.adobe.serialization.json { public class JSONParseError extends Error { private var _text:String; private var _location:int; public function JSONParseError(message:String="", location:int=0, text:String=""){ super(message); name = "JSONParseError"; _location = location; _text = text; } public function get text():String{ return (_text); } public function get location():int{ return (_location); } } }//package com.adobe.serialization.json
Section 11
//JSONToken (com.adobe.serialization.json.JSONToken) package com.adobe.serialization.json { public class JSONToken { private var _value:Object; private var _type:int; public function JSONToken(type:int=-1, value:Object=null){ super(); _type = type; _value = value; } public function set value(v:Object):void{ _value = v; } public function get value():Object{ return (_value); } public function set type(value:int):void{ _type = value; } public function get type():int{ return (_type); } } }//package com.adobe.serialization.json
Section 12
//JSONTokenizer (com.adobe.serialization.json.JSONTokenizer) package com.adobe.serialization.json { public class JSONTokenizer { private var loc:int; private var ch:String; private var obj:Object; private var jsonString:String; public function JSONTokenizer(s:String){ super(); jsonString = s; loc = 0; nextChar(); } private function skipComments():void{ if (ch == "/"){ nextChar(); switch (ch){ case "/": do { nextChar(); } while (((!((ch == "\n"))) && (!((ch == ""))))); nextChar(); break; case "*": nextChar(); while (true) { if (ch == "*"){ nextChar(); if (ch == "/"){ nextChar(); break; }; } else { nextChar(); }; if (ch == ""){ parseError("Multi-line comment not closed"); }; }; break; default: parseError((("Unexpected " + ch) + " encountered (expecting '/' or '*' )")); }; }; } private function isDigit(ch:String):Boolean{ return ((((ch >= "0")) && ((ch <= "9")))); } private function readNumber():JSONToken{ var token:JSONToken; var input:String; var num:Number; token = new JSONToken(); token.type = JSONTokenType.NUMBER; input = ""; if (ch == "-"){ input = (input + "-"); nextChar(); }; if (!isDigit(ch)){ parseError("Expecting a digit"); }; if (ch == "0"){ input = (input + ch); nextChar(); if (isDigit(ch)){ parseError("A digit cannot immediately follow 0"); }; } else { while (isDigit(ch)) { input = (input + ch); nextChar(); }; }; if (ch == "."){ input = (input + "."); nextChar(); if (!isDigit(ch)){ parseError("Expecting a digit"); }; while (isDigit(ch)) { input = (input + ch); nextChar(); }; }; if ((((ch == "e")) || ((ch == "E")))){ input = (input + "e"); nextChar(); if ((((ch == "+")) || ((ch == "-")))){ input = (input + ch); nextChar(); }; if (!isDigit(ch)){ parseError("Scientific notation number needs exponent value"); }; while (isDigit(ch)) { input = (input + ch); nextChar(); }; }; num = Number(input); if (((isFinite(num)) && (!(isNaN(num))))){ token.value = num; return (token); }; parseError((("Number " + num) + " is not valid!")); return (null); } private function nextChar():String{ return ((ch = jsonString.charAt(loc++))); } public function getNextToken():JSONToken{ var token:JSONToken; var _local2:String; var _local3:String; var _local4:String; token = new JSONToken(); skipIgnored(); switch (ch){ case "{": token.type = JSONTokenType.LEFT_BRACE; token.value = "{"; nextChar(); break; case "}": token.type = JSONTokenType.RIGHT_BRACE; token.value = "}"; nextChar(); break; case "[": token.type = JSONTokenType.LEFT_BRACKET; token.value = "["; nextChar(); break; case "]": token.type = JSONTokenType.RIGHT_BRACKET; token.value = "]"; nextChar(); break; case ",": token.type = JSONTokenType.COMMA; token.value = ","; nextChar(); break; case ":": token.type = JSONTokenType.COLON; token.value = ":"; nextChar(); break; case "t": _local2 = ((("t" + nextChar()) + nextChar()) + nextChar()); if (_local2 == "true"){ token.type = JSONTokenType.TRUE; token.value = true; nextChar(); } else { parseError(("Expecting 'true' but found " + _local2)); }; break; case "f": _local3 = (((("f" + nextChar()) + nextChar()) + nextChar()) + nextChar()); if (_local3 == "false"){ token.type = JSONTokenType.FALSE; token.value = false; nextChar(); } else { parseError(("Expecting 'false' but found " + _local3)); }; break; case "n": _local4 = ((("n" + nextChar()) + nextChar()) + nextChar()); if (_local4 == "null"){ token.type = JSONTokenType.NULL; token.value = null; nextChar(); } else { parseError(("Expecting 'null' but found " + _local4)); }; break; case "\"": token = readString(); break; default: if (((isDigit(ch)) || ((ch == "-")))){ token = readNumber(); } else { if (ch == ""){ return (null); }; parseError((("Unexpected " + ch) + " encountered")); }; }; return (token); } private function skipWhite():void{ while (isWhiteSpace(ch)) { nextChar(); }; } private function isWhiteSpace(ch:String):Boolean{ return ((((((((ch == " ")) || ((ch == "\t")))) || ((ch == "\n")))) || ((ch == "\r")))); } public function parseError(message:String):void{ throw (new JSONParseError(message, loc, jsonString)); } private function skipIgnored():void{ var originalLoc:int; do { originalLoc = loc; skipWhite(); skipComments(); } while (originalLoc != loc); } private function isHexDigit(ch:String):Boolean{ var uc:String; uc = ch.toUpperCase(); return (((isDigit(ch)) || ((((uc >= "A")) && ((uc <= "F")))))); } private function readString():JSONToken{ var token:JSONToken; var string:String; var _local5:String; var i:int; token = new JSONToken(); token.type = JSONTokenType.STRING; string = ""; nextChar(); while (((!((ch == "\""))) && (!((ch == ""))))) { if (ch == "\\"){ nextChar(); switch (ch){ case "\"": string = (string + "\""); break; case "/": string = (string + "/"); break; case "\\": string = (string + "\\"); break; case "b": string = (string + "\b"); break; case "f": string = (string + "\f"); break; case "n": string = (string + "\n"); break; case "r": string = (string + "\r"); break; case "t": string = (string + "\t"); break; case "u": _local5 = ""; i = 0; while (i < 4) { if (!isHexDigit(nextChar())){ parseError((" Excepted a hex digit, but found: " + ch)); }; _local5 = (_local5 + ch); i++; }; string = (string + String.fromCharCode(parseInt(_local5, 16))); break; default: string = (string + ("\\" + ch)); }; } else { string = (string + ch); }; nextChar(); }; if (ch == ""){ parseError("Unterminated string literal"); }; nextChar(); token.value = string; return (token); } } }//package com.adobe.serialization.json
Section 13
//JSONTokenType (com.adobe.serialization.json.JSONTokenType) package com.adobe.serialization.json { public class JSONTokenType { public static const NUMBER:int = 11; public static const FALSE:int = 8; public static const RIGHT_BRACKET:int = 4; public static const NULL:int = 9; public static const TRUE:int = 7; public static const RIGHT_BRACE:int = 2; public static const UNKNOWN:int = -1; public static const COMMA:int = 0; public static const LEFT_BRACKET:int = 3; public static const STRING:int = 10; public static const LEFT_BRACE:int = 1; public static const COLON:int = 6; public function JSONTokenType(){ super(); } } }//package com.adobe.serialization.json
Section 14
//ControlSetBothScale (com.kid360.display.transform.ControlSetBothScale) package com.kid360.display.transform { import com.senocular.display.transform.*; public dynamic class ControlSetBothScale extends Array { public function ControlSetBothScale(){ var moveCursor:CursorMove; var scaleCursorB:CursorScale; var scaleCursorB90:CursorScale; moveCursor = new CursorMove(); scaleCursorB = new CursorScale(ControlUVScale.BOTH, 0); scaleCursorB90 = new CursorScale(ControlUVScale.BOTH, 90); super(new ControlBorder(), new ControlMove(moveCursor), new ControlUVScale(0, 0, ControlUVScale.BOTH, scaleCursorB), new ControlUVScale(0, 1, ControlUVScale.BOTH, scaleCursorB90), new ControlUVScale(1, 0, ControlUVScale.BOTH, scaleCursorB90), new ControlUVScale(1, 1, ControlUVScale.BOTH, scaleCursorB), new ControlCursor()); } } }//package com.kid360.display.transform
Section 15
//ControlSetNoScale (com.kid360.display.transform.ControlSetNoScale) package com.kid360.display.transform { import com.senocular.display.transform.*; public dynamic class ControlSetNoScale extends Array { public function ControlSetNoScale(){ var moveCursor:CursorMove; moveCursor = new CursorMove(); super(new ControlMove(moveCursor), new ControlCursor()); } } }//package com.kid360.display.transform
Section 16
//ControlSetRotBothScale (com.kid360.display.transform.ControlSetRotBothScale) package com.kid360.display.transform { import com.senocular.display.transform.*; public dynamic class ControlSetRotBothScale extends Array { public function ControlSetRotBothScale(){ var moveCursor:CursorMove; var rotateCursor:CursorRotate; var scaleCursorB:CursorScale; var scaleCursorB90:CursorScale; var rotate00:ControlUVRotate; var rotate01:ControlUVRotate; var rotate10:ControlUVRotate; var rotate11:ControlUVRotate; moveCursor = new CursorMove(); rotateCursor = new CursorRotate(); scaleCursorB = new CursorScale(ControlUVScale.BOTH, 0); scaleCursorB90 = new CursorScale(ControlUVScale.BOTH, 90); rotate00 = new ControlUVRotate(0, 0, rotateCursor); rotate00.scaleX = 3; rotate00.scaleY = 3; rotate00.alpha = 0; rotate01 = new ControlUVRotate(0, 1, rotateCursor); rotate01.scaleX = 3; rotate01.scaleY = 3; rotate01.alpha = 0; rotate10 = new ControlUVRotate(1, 0, rotateCursor); rotate10.scaleX = 3; rotate10.scaleY = 3; rotate10.alpha = 0; rotate11 = new ControlUVRotate(1, 1, rotateCursor); rotate11.scaleX = 3; rotate11.scaleY = 3; rotate11.alpha = 0; super(new ControlBorder(), new ControlMove(moveCursor), rotate00, rotate01, rotate10, rotate11, new ControlUVScale(0, 0, ControlUVScale.BOTH, scaleCursorB), new ControlUVScale(0, 1, ControlUVScale.BOTH, scaleCursorB90), new ControlUVScale(1, 0, ControlUVScale.BOTH, scaleCursorB90), new ControlUVScale(1, 1, ControlUVScale.BOTH, scaleCursorB), new ControlCursor()); } } }//package com.kid360.display.transform
Section 17
//ControlSetRotNoScale (com.kid360.display.transform.ControlSetRotNoScale) package com.kid360.display.transform { import com.senocular.display.transform.*; public dynamic class ControlSetRotNoScale extends Array { public function ControlSetRotNoScale(){ var moveCursor:CursorMove; var rotateCursor:CursorRotate; var rotate00:ControlUVRotate; var rotate01:ControlUVRotate; var rotate10:ControlUVRotate; var rotate11:ControlUVRotate; moveCursor = new CursorMove(); rotateCursor = new CursorRotate(); rotate00 = new ControlUVRotate(0, 0, rotateCursor); rotate01 = new ControlUVRotate(0, 1, rotateCursor); rotate10 = new ControlUVRotate(1, 0, rotateCursor); rotate11 = new ControlUVRotate(1, 1, rotateCursor); super(new ControlBorder(), new ControlMove(moveCursor), rotate00, rotate01, rotate10, rotate11, new ControlCursor()); } } }//package com.kid360.display.transform
Section 18
//ControlSetRotUniformScale (com.kid360.display.transform.ControlSetRotUniformScale) package com.kid360.display.transform { import com.senocular.display.transform.*; public dynamic class ControlSetRotUniformScale extends Array { public function ControlSetRotUniformScale(){ var moveCursor:CursorMove; var rotateCursor:CursorRotate; var scaleCursorB:CursorScale; var scaleCursorB90:CursorScale; var rotate00:ControlUVRotate; var rotate01:ControlUVRotate; var rotate10:ControlUVRotate; var rotate11:ControlUVRotate; moveCursor = new CursorMove(); rotateCursor = new CursorRotate(); scaleCursorB = new CursorScale(ControlUVScale.UNIFORM, 0); scaleCursorB90 = new CursorScale(ControlUVScale.UNIFORM, 90); rotate00 = new ControlUVRotate(0, 0, rotateCursor); rotate00.scaleX = 3; rotate00.scaleY = 3; rotate00.alpha = 0; rotate01 = new ControlUVRotate(0, 1, rotateCursor); rotate01.scaleX = 3; rotate01.scaleY = 3; rotate01.alpha = 0; rotate10 = new ControlUVRotate(1, 0, rotateCursor); rotate10.scaleX = 3; rotate10.scaleY = 3; rotate10.alpha = 0; rotate11 = new ControlUVRotate(1, 1, rotateCursor); rotate11.scaleX = 3; rotate11.scaleY = 3; rotate11.alpha = 0; super(new ControlBorder(), new ControlMove(moveCursor), rotate00, rotate01, rotate10, rotate11, new ControlUVScale(0, 0, ControlUVScale.UNIFORM, scaleCursorB), new ControlUVScale(0, 1, ControlUVScale.UNIFORM, scaleCursorB90), new ControlUVScale(1, 0, ControlUVScale.UNIFORM, scaleCursorB90), new ControlUVScale(1, 1, ControlUVScale.UNIFORM, scaleCursorB), new ControlCursor()); } } }//package com.kid360.display.transform
Section 19
//ControlSetUniformScale (com.kid360.display.transform.ControlSetUniformScale) package com.kid360.display.transform { import com.senocular.display.transform.*; public dynamic class ControlSetUniformScale extends Array { public function ControlSetUniformScale(){ var moveCursor:CursorMove; var scaleCursorB:CursorScale; var scaleCursorB90:CursorScale; moveCursor = new CursorMove(); scaleCursorB = new CursorScale(ControlUVScale.UNIFORM, 0); scaleCursorB90 = new CursorScale(ControlUVScale.UNIFORM, 90); super(new ControlBorder(), new ControlMove(moveCursor), new ControlUVScale(0, 0, ControlUVScale.UNIFORM, scaleCursorB), new ControlUVScale(0, 1, ControlUVScale.UNIFORM, scaleCursorB90), new ControlUVScale(1, 0, ControlUVScale.UNIFORM, scaleCursorB90), new ControlUVScale(1, 1, ControlUVScale.UNIFORM, scaleCursorB), new ControlCursor()); } } }//package com.kid360.display.transform
Section 20
//AssetCarouselButton (com.kid360.hasbro.clickncolor.buttons.AssetCarouselButton) package com.kid360.hasbro.clickncolor.buttons { import flash.display.*; import flash.geom.*; import flash.events.*; import com.kid360.ui.*; public class AssetCarouselButton extends SkinnableCarouselItem { private var iconMask:SkinnableSprite; private var assetConfig:XML; private var assetIcon:SkinnableSprite; private var maxWidth:Number; private var maxHeight:Number; public function AssetCarouselButton(container:Scroller=null, assetConfig:XML=null){ super(container); visible = false; assetIcon = new SkinnableSprite(); assetIcon.mouseEnabled = false; assetIcon.name = "icon"; config = assetConfig; addEventListener(SkinnableSprite.SKINNABLE_SPRITE_READY, onSpriteReady); } override protected function applySkin(newConfig:XML):void{ var propertyValue:String; var newConfig = newConfig; if (!config){ return; }; assetConfig = newConfig; if (config.hasOwnProperty("@buttonID")){ skinConfig = (scroller.parent as Configurable).config.itemSkin.(@id == config.@buttonID); } else { skinConfig = (scroller.parent as Configurable).config.itemSkin[0]; }; super.applySkin(skinConfig); var _local3 = xmlValue(skinConfig, "mask"); propertyValue = _local3; if ("" != _local3){ iconMask = new SkinnableSprite(new XML((("<mask src='" + propertyValue) + "'/>"))); iconMask.name = "iconMask"; iconMask.addEventListener(SkinnableSprite.SKINNABLE_SPRITE_READY, onSpriteReady); }; } private function scaleIcon():void{ var iconWidth:Number; var iconHeight:Number; var propertyValue:String; iconWidth = assetIcon.width; iconHeight = assetIcon.height; propertyValue = xmlValue(skinConfig, "@menuScale"); if ("" != propertyValue){ assetIcon.scaleX = (assetIcon.scaleY = parseFloat(propertyValue)); } else { assetIcon.scaleX = (assetIcon.scaleY = (maxHeight / iconHeight)); if (assetIcon.width > maxWidth){ assetIcon.scaleX = (assetIcon.scaleY = (maxWidth / iconWidth)); }; }; assetIcon.x = ((maxWidth - assetIcon.width) / 2); assetIcon.y = ((maxHeight - assetIcon.height) / 2); if (iconMask){ assetIcon.mask = iconMask; } else { throw (new Error("Can't mask icon with a null mask")); }; } private function onSpriteReady(e:Event):void{ switch (e.target){ case iconMask: iconMask.removeEventListener(SkinnableSprite.SKINNABLE_SPRITE_READY, onSpriteReady); addChild(iconMask); break; case assetIcon: assetIcon.removeEventListener(SkinnableSprite.SKINNABLE_SPRITE_READY, onSpriteReady); scaleIcon(); addChild(assetIcon); dispatchEvent(new Event(Event.COMPLETE)); break; default: break; }; } public function get keywords():Array{ var trimString:Function; var kws:Array; var kwList:Array; var kw:String; trimString = function (s:String):String{ var chars:Array; chars = s.split(""); while ((((" " == chars[0])) || (("\t" == chars[0])))) { chars.shift(); }; while ((((" " == chars[(chars.length - 1)])) || (("\t" == chars[(chars.length - 1)])))) { chars.pop(); }; return (chars.join("")); }; kws = assetConfig.keywords.split(","); kwList = []; for each (kw in kws) { kwList.push(trimString(kw)); }; return (kwList); } override protected function onAssetLoaded(e:StatusEvent):void{ var assetID:String; var faceNum:int; var _local4:DisplayObject; assetID = e.level; faceNum = ["up", "over", "down", "selectedUp", "selectedOver", "selectedDown"].indexOf(assetID); if (faceNum > -1){ faces[faceNum] = assetLoader.assetForID(assetID); switch (assetID){ case "up": _local4 = (e.target.loaders[assetID].content as DisplayObject); maxWidth = _local4.width; maxHeight = _local4.height; assetIcon.config = assetConfig; assetIcon.addEventListener(SkinnableSprite.SKINNABLE_SPRITE_READY, onSpriteReady); curState = IDLE_STATE; addChildAt(faces[faceNum], 0); break; default: break; }; }; } override protected function showState(btnState:int):void{ if (btnState == INIT_STATE){ return; }; if (faces[btnState]){ if (((faces[curState]) && (contains(faces[curState])))){ removeChild(faces[curState]); }; addChildAt(faces[btnState], 0); }; } public function get iconData():XML{ return (assetConfig); } public function get iconAsset():DisplayObject{ return (assetIcon.asset1); } } }//package com.kid360.hasbro.clickncolor.buttons
Section 21
//MessageCarouselButton (com.kid360.hasbro.clickncolor.buttons.MessageCarouselButton) package com.kid360.hasbro.clickncolor.buttons { import flash.events.*; import flash.text.*; import com.kid360.ui.*; public class MessageCarouselButton extends CarouselItem { public var label:TextField; private var depressed:Boolean; public function MessageCarouselButton(container:Scroller, labelText:String=""){ super(container); stop(); mouseChildren = false; buttonMode = true; label.autoSize = TextFieldAutoSize.CENTER; label.wordWrap = true; buttonLabel = labelText; addEventListener(MouseEvent.MOUSE_OVER, onRolled); addEventListener(MouseEvent.MOUSE_OUT, onRolledOut); addEventListener(MouseEvent.MOUSE_DOWN, onPressed); addEventListener(MouseEvent.MOUSE_UP, onReleased); addEventListener(Event.ENTER_FRAME, frameHook); } private function onReleased(e:MouseEvent):void{ gotoAndStop((depressed) ? 5 : 2); } private function frameHook(e:Event):void{ removeEventListener(Event.ENTER_FRAME, frameHook); dispatchEvent(new Event(Event.COMPLETE)); } private function onPressed(e:MouseEvent):void{ depressed = !(depressed); gotoAndStop((depressed) ? 6 : 2); } public function toggle(flag:Boolean):void{ depressed = flag; gotoAndStop((depressed) ? 4 : 1); } public function get isPressed():Boolean{ return (depressed); } private function onRolled(e:MouseEvent):void{ gotoAndStop((depressed) ? 5 : 2); } private function onRolledOut(e:MouseEvent):void{ gotoAndStop((depressed) ? 4 : 1); } public function set buttonLabel(newLabel:String):void{ label.text = newLabel; label.y = ((label.height > 40)) ? 0 : 11.5; } public function get buttonLabel():String{ return (label.text); } } }//package com.kid360.hasbro.clickncolor.buttons
Section 22
//ActivityScreen (com.kid360.hasbro.clickncolor.ActivityScreen) package com.kid360.hasbro.clickncolor { import flash.display.*; import flash.utils.*; import flash.geom.*; import flash.events.*; import flash.text.*; import fl.transitions.*; import com.kid360.ui.*; import com.kid360.hasbro.clickncolor.buttons.*; import fl.transitions.easing.*; import com.kid360.*; import flash.net.*; import flash.printing.*; import flash.ui.*; public class ActivityScreen extends ClickNColorScreen { private const IDLE_THRESHOLD:Number = 15000; private var brushHotspot:Point; private var surfBtn:SkinnableButton; private var printBtn:SkinnableButton; private var palette:ColorPalette; private var workspace:Workspace; private var printTimer:Timer; private var categoryButtons:Array; private var clearBtn:SkinnableButton; private var xTween:Tween; private var foldedCardDialog:FoldedCardDialog; private var tutorialLoader:Loader; private var cardBtn:SkinnableButton; private var filterBtns:Array; private var brushHome:SkinnableSprite; private var brush:PaintBrush; private var printcomp:PrintComposition; private var helpBtn:SkinnableButton; private var yTween:Tween; private var testMiniString:String;// = "" private var dialogLoader:Loader; private var draggee:Sprite; private var collections:Array; private var idleTimer:Timer; private var eraseBtn:SkinnableButton; private var curFilter:String;// = "" private var confirmationDialog:MovieClip; public function ActivityScreen(screenConfig:XML=null){ categoryButtons = []; collections = []; filterBtns = []; curFilter = ""; testMiniString = ""; super(); workspace = (addChildAt(new Workspace(), 0) as Workspace); printBtn = new SkinnableButton(); printBtn.name = "printola"; addChild(printBtn); cardBtn = new SkinnableButton(); cardBtn.name = "carder"; addChild(cardBtn); clearBtn = new SkinnableButton(); addChild(clearBtn); surfBtn = new SkinnableButton(); addChild(surfBtn); helpBtn = new SkinnableButton(); addChild(helpBtn); eraseBtn = new SkinnableButton(); addChild(eraseBtn); dialogLoader = new Loader(); dialogLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onDialogLoaded); tutorialLoader = new Loader(); config = screenConfig; printTimer = new Timer(150, 1); printTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onReadyToPrint); idleTimer = new Timer(IDLE_THRESHOLD, 1); idleTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onIdle); addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } public function printFoldedCard(greeting:String):void{ var bmd:BitmapData; workspace.toolTarget = null; bmd = new BitmapData(720, 502, false); bmd.draw(workspace); startPrinting([new GreetingCardImposition(new Bitmap(bmd), greeting, config.printCopyright, config.greetingCard.cardBlurb)]); workspace.restoreSelection(); } private function onDialogDone(e:Event):void{ removeChild(confirmationDialog); } public function get brushColor():uint{ if (!brushActive){ throw (new Error("Can't retrieve color of an inactive brush")); }; return (brush.paintColor); } private function grabBrush(flag:Boolean):void{ if (!brush){ return; }; workspace.editable = !(flag); if (flag){ if (!draggee){ xTween = new Tween(brush, "x", None.easeNone, brush.x, (mouseX - brushHotspot.x), 0.125, true); yTween = new Tween(brush, "y", None.easeNone, brush.y, (mouseY - brushHotspot.y), 0.125, true); xTween.addEventListener(TweenEvent.MOTION_FINISH, onBrushAttached); }; Mouse.hide(); } else { xTween = new Tween(brush, "x", None.easeNone, brush.x, brushHome.x, 0.125, true); yTween = new Tween(brush, "y", None.easeNone, brush.y, brushHome.y, 0.125, true); Mouse.show(); }; } private function onIdle(e:TimerEvent):void{ var ba:ByteArray; ba = new ByteArray(); ba.writeObject(workspace.layoutSpec); dispatchEvent(new NetStatusEvent(NetStatusEvent.NET_STATUS, true, true, ba)); } public function get canPaint():Boolean{ return (config.hasOwnProperty("colorsList")); } public function clear():void{ clearBtn.state = SkinnableButton.IDLE_STATE; if (confirmationDialog){ activated = false; addChild(confirmationDialog); (confirmationDialog.getChildAt(0) as MovieClip).gotoAndPlay("close"); }; } override public function set config(newConfig:XML):void{ var btnSpec:XML; var b:SkinnableButton; var newConfig = newConfig; super.config = newConfig; if (!newConfig){ return; }; dialogLoader.load(new URLRequest((assetsPath + newConfig.confirmationDialog[0].@src))); workspace.config = newConfig.workspace[0]; foldedCardDialog = new FoldedCardDialog(newConfig.greetingCard[0]); for each (btnSpec in newConfig.button.("filter" == @action)) { b = new SkinnableButton(btnSpec); b.toggling = true; filterBtns.push(addChild(b)); }; printBtn.config = newConfig.button.("print" == @action)[0]; cardBtn.config = newConfig.button.("greetingcard" == @action)[0]; clearBtn.config = newConfig.button.("clear" == @action)[0]; surfBtn.config = newConfig.button.("surf" == @action)[0]; helpBtn.config = newConfig.button.("tutor" == @action)[0]; eraseBtn.config = newConfig.button.("erase" == @action)[0]; initCategories(newConfig..category); if (canPaint){ palette = new ColorPalette(config.colorsList[0]); addChild(palette); brushHome = new SkinnableSprite(config.paintBucket[0]); brush = new PaintBrush(config.paintBucket[0]); brush.name = "paintbrush"; brush.x = parseFloat(config.paintBucket.@x[0]); brush.y = parseFloat(config.paintBucket.@y[0]); brushHotspot = new Point(parseFloat(config.paintBucket.@anchorX[0]), parseFloat(config.paintBucket.@anchorY[0])); addChild(brushHome); PaintBucket.setTint(brushHome, 0, 100); addChild(brush); }; } private function updateButtons():void{ eraseBtn.mouseEnabled = (clearBtn.mouseEnabled = (printBtn.mouseEnabled = (cardBtn.mouseEnabled = (workspace.numChildren > 1)))); } private function startPrinting(images:Array, pageMargin:Number=0):void{ var pq:PrintQueue; pq = new PrintQueue(images); pq.margin = pageMargin; addChild(pq); pq.print(); removeChild(pq); } public function print():void{ var outputFormat:String; workspace.toolTarget = null; outputFormat = ClickNColorActivity.appConfig.printOutput; switch (outputFormat){ case "fullPage": printFullPage(); break; case "foldedCard": printFoldedCard("faked message"); break; default: trace("not gonna print", outputFormat); break; }; } public function get brushActive():Boolean{ return (((canPaint) && ((draggee == brush)))); } private function onClick(e:MouseEvent):void{ var workspaceAssetWasClicked:Boolean; var clickEventCode:String; var _local4:String; var _local5:PrintPreviewer; var _local6:int; var _local7:int; idleTimer.reset(); idleTimer.start(); workspaceAssetWasClicked = isWorkspaceAsset((e.target as DisplayObject)); if (!((workspaceAssetWasClicked) || ((e.target is PaintBucket)))){ if (((draggee) && (!((e.target is Workspace))))){ stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMovement); draggee = null; grabBrush(false); brush.mouseEnabled = true; }; }; switch (e.target){ case workspace: if (draggee){ workspace.bgColor = brushColor; }; break; case surfBtn: ClickNColorActivity.reportClick("HubLink"); _local4 = (e.target as SkinnableButton).config.@actionData[0].toString(); navigateToURL(new URLRequest(_local4), "_blank"); break; case printBtn: ClickNColorActivity.reportClick("PrintFull"); workspace.toolTarget = null; grabBrush(false); printTimer.start(); break; case cardBtn: printcomp = new PrintComposition(workspace.markup); _local5 = new PrintPreviewer(); printcomp.x = 75.8; printcomp.y = 43.4; printcomp.scaleX = (printcomp.scaleY = 0.9); _local5.addChild(printcomp); addChild(_local5); break; case foldedCardDialog.okBtn: printFoldedCard(foldedCardDialog.selectedMessage); break; case eraseBtn: workspace.deleteLastChild(); updateButtons(); break; case clearBtn: clear(); break; case helpBtn: dispatchEvent(new StatusEvent(StatusEvent.STATUS, true, true, "showHelp")); break; default: _local6 = categoryButtons.indexOf(e.target); _local7 = filterBtns.indexOf(e.target); if (_local7 > -1){ clickEventCode = (e.target as SkinnableButton).config.@eventCode; ClickNColorActivity.reportClick(clickEventCode); filterCollections((e.target as SkinnableButton)); } else { if (_local6 > -1){ showCollection(_local6); } else { if ((e.target is AssetCarouselButton)){ workspace.addItem((e.target as AssetCarouselButton)); updateButtons(); } else { if ((e.target is PaintBrush)){ grabBrush(true); } else { if ((e.target is PaintBucket)){ brush.paintColor = parseInt(e.target.config, 16); grabBrush(true); } else { if (workspaceAssetWasClicked){ if (!(e.target is WorkspaceAsset)){ if (draggee){ (e.target as MovieClip).layerColor = brush.paintColor; PaintBucket.setTint((e.target as DisplayObject), brush.paintColor, brush.tintPercent); }; }; } else { switch (e.target.name){ case "yes_btn": workspace.clear(); case "no_btn": (confirmationDialog.getChildAt(0) as MovieClip).gotoAndPlay("open"); activated = true; updateButtons(); break; case "startOverBtn": removeChild(e.target.parent); workspace.clear(); break; case "printConfirm": printCakeComposition(); case "printCancel": removeChild(e.target.parent); break; default: if ((e.target is Workspace)){ workspace.toolTarget = null; }; break; }; }; }; }; }; }; }; break; }; } private function onDialogLoaded(e:Event):void{ dialogLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onDialogLoaded); confirmationDialog = (dialogLoader.content as MovieClip); if (config.confirmationDialog[0].hasOwnProperty("@x")){ confirmationDialog.x = config.confirmationDialog[0].@x; }; if (config.confirmationDialog[0].hasOwnProperty("@y")){ confirmationDialog.y = config.confirmationDialog[0].@y; }; } private function updateFilters():void{ var defaultFilterButton:SkinnableButton; var i:int; var btnSpec:XML; var attributeValue:String; if (0 == filterBtns.length){ return; }; i = 0; while (i < filterBtns.length) { btnSpec = filterBtns[i].config; if (btnSpec.hasOwnProperty("@default")){ attributeValue = btnSpec.@default.toLowerCase(); if (((("yes" == attributeValue)) || (("true" == attributeValue)))){ defaultFilterButton = filterBtns[i]; }; }; i++; }; if (!defaultFilterButton){ defaultFilterButton = filterBtns[0]; }; filterCollections(defaultFilterButton); } private function filterCollections(foo:SkinnableButton):void{ var i:int; var fc:SkinnableCarousel; i = 0; while (i < filterBtns.length) { filterBtns[i].selected = (foo == filterBtns[i]); i++; }; curFilter = foo.config.@keyword; for each (fc in collections) { fc.itemFilter = assetScreener; }; } public function workspaceMarkupFromMiniString(s:String):XML{ var splitIntoItems:Function; var workspaceItems:Array; var result:XML; var miniString:String; var s = s; splitIntoItems = function (s:String, chunkSize:int=25):Array{ var chars:Array; var assets:Array; chars = s.split(""); assets = []; while (chars.length > (chunkSize - 1)) { assets.push(chars.splice(0, chunkSize).join("")); }; trace("finished with", chars.length, "leftovers (should always be zero)"); return (assets); }; workspaceItems = splitIntoItems(s); result = <page/> ; for each (miniString in workspaceItems) { result.appendChild(assetMarkupFromMiniString(miniString)); }; return (result); } private function assetScreener(o:DisplayObject):Boolean{ var itemKeywords:Array; var kw:String; if ("" == curFilter){ return (true); }; itemKeywords = (o as AssetCarouselButton).keywords; for each (kw in itemKeywords) { if (kw == curFilter){ return (true); }; }; return (false); } private function tutor():void{ parent.addChild(new TutorialScreen()); } private function isWorkspaceAsset(obj:DisplayObject):Boolean{ var par:DisplayObjectContainer; if ((obj is WorkspaceAsset)){ return (true); }; par = obj.parent; while (par) { if ((par is WorkspaceAsset)){ return (true); }; par = par.parent; }; return (false); } private function initCategories(catList:XMLList):void{ var categoryName:Function; var cat:XML; var btn:SkinnableButton; var fc:SkinnableCarousel; var catList = catList; categoryName = function (data:String):String{ if (-1 < data.indexOf("Bkgd")){ return ("backgrounds"); }; if (-1 < data.indexOf("Char")){ return ("characters"); }; if (-1 < data.indexOf("Prop")){ return ("props"); }; return (""); }; for each (cat in catList) { btn = new SkinnableButton(cat.categoryButton[0]); btn.toggling = true; btn.grouped = true; categoryButtons.push(addChild(btn)); fc = new SkinnableCarousel(cat.carousel[0]); fc.name = categoryName(cat.categoryButton[0].@up); collections.push(fc); }; addChild(collections[0]); } private function onReadyToPrint(e:TimerEvent):void{ print(); } private function onKeyReleased(event:KeyboardEvent):void{ if (!((((event.altKey) || (event.ctrlKey))) || (event.shiftKey))){ if ((((event.keyCode == Keyboard.DELETE)) || ((event.keyCode == Keyboard.BACKSPACE)))){ workspace.deleteLastChild(); }; }; if (event.altKey){ if (event.keyCode == 90){ trace(((root.mouseX + ",") + root.mouseY)); }; }; } private function onBrushAttached(e:TweenEvent):void{ e.target.removeEventListener(TweenEvent.MOTION_FINISH, onBrushAttached); draggee = brush; draggee.mouseEnabled = false; setChildIndex(draggee, (numChildren - 1)); stage.addEventListener(MouseEvent.MOUSE_MOVE, onMovement); } private function showCollection(collectionNum:int):void{ var i:int; if (contains(collections[collectionNum])){ trace("nothing to do if you keep clicking the same button"); return; }; i = 0; while (i < collections.length) { if (i != collectionNum){ if (contains(collections[i])){ removeChild(collections[i]); }; }; categoryButtons[i].selected = (collectionNum == i); i++; }; addChild(collections[collectionNum]); } public function printFullPage():void{ var fpi:FullPageImposition; var wsLoc:Point; workspace.toolTarget = null; fpi = new FullPageImposition(); fpi.layout(workspace, config.printCopyright); startPrinting([fpi]); wsLoc = fpi.imageHome; workspace.x = wsLoc.x; workspace.y = wsLoc.y; addChildAt(workspace, 0); workspace.restoreSelection(); } public function get selectedCollection():int{ var i:int; i = 0; while (i < collections.length) { if (this.contains(collections[i])){ return (i); }; i++; }; trace("We don't ever want to get this far"); return (-1); } public function set activated(flag:Boolean):void{ var btns:Array; var b:Sprite; var curCollection:int; btns = [printBtn, clearBtn, surfBtn, helpBtn, eraseBtn].concat(categoryButtons); for each (b in btns) { b.mouseEnabled = flag; }; curCollection = selectedCollection; if (curCollection > -1){ (collections[curCollection] as SkinnableCarousel).mouseChildren = flag; }; } private function onAddedToStage(e:Event):void{ var curCollection:int; removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); addEventListener("dialogDone", onDialogDone); addEventListener(MouseEvent.CLICK, onClick); stage.addEventListener(KeyboardEvent.KEY_UP, onKeyReleased); curCollection = selectedCollection; if (curCollection > -1){ categoryButtons[curCollection].selected = true; } else { trace("there is no curCollection <gasp>"); }; updateFilters(); updateButtons(); } private function onMovement(e:MouseEvent):void{ draggee.x = (mouseX - brushHotspot.x); draggee.y = (mouseY - brushHotspot.y); } public function printCakeComposition():void{ workspace.toolTarget = null; printcomp.x = (printcomp.y = 0); printcomp.scaleX = (printcomp.scaleY = 1); startPrinting([printcomp]); workspace.restoreSelection(); } public function assetMarkupFromMiniString(miniString:String):XML{ var restorePeriods:Function; var assetInfo:XML; var markup:XML; var datum:Number; var miniString = miniString; restorePeriods = function (s:String):String{ var hunks:Array; hunks = [s.substr(0, 7), s.substr(7, 5), s.substr(12, 3), s.substr(15, 3), s.substr(18, 5), s.substr(-2)]; return (hunks.join(".")); }; if (25 != miniString.length){ throw (new Error("Can't generate markup from malformed miniString")); }; miniString = restorePeriods(miniString); assetInfo = (root as ClickNColorActivityWithSplash).assetForID(miniString.substr(0, 4)); if (((assetInfo.hasOwnProperty("@isBackground")) && (("true" == assetInfo.@isBackground.toLowerCase())))){ markup = <bg><x>0</x><y>0</y><scaleX>1</scaleX><scaleY>1</scaleY><rotation>0</rotation></bg> ; } else { markup = <sprite/> ; datum = parseFloat(miniString.substr(4, 6)); markup.x = String(datum); datum = parseFloat(miniString.substr(10, 6)); markup.y = String(datum); datum = parseFloat(miniString.substr(16, 4)); markup.scaleX = String(datum); datum = parseFloat(miniString.substr(20, 4)); markup.scaleY = String(datum); datum = parseFloat(miniString.substr(24, 6)); markup.rotation = String(datum); markup.scale = assetInfo.@scale; markup.rotate = assetInfo.@rotate; }; markup.src = assetInfo.@src; return (markup); } } }//package com.kid360.hasbro.clickncolor
Section 23
//ClickNColorActivity (com.kid360.hasbro.clickncolor.ClickNColorActivity) package com.kid360.hasbro.clickncolor { import flash.display.*; import flash.utils.*; import flash.events.*; import com.kid360.hasbro.clickncolor.buttons.*; import com.kid360.hubworld.*; import com.kid360.i18n.*; import com.kid360.*; import flash.net.*; import flash.external.*; import flash.system.*; public class ClickNColorActivity extends HubWorldGame { private var configLoader:URLLoader; private var helpScreen:TutorialScreen; private var activityScreen:ActivityScreen; public var config:XML; private var splashScreen:SplashScreen; private var scriptLoader:URLLoader; public static var appConfig:XML = defaultConfig; public function ClickNColorActivity(){ super(); configLoader = new URLLoader(); configLoader.addEventListener(Event.COMPLETE, onConfigLoaded); scriptLoader = new URLLoader(); addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } private function stringsDidLoad():void{ trace("Let's load config:", (HubWorldGame.gameAssetsURL + "config.xml")); configLoader.load(new URLRequest((HubWorldGame.gameAssetsURL + "config.xml"))); } private function onImageSaved(e:Event):void{ var scriptData:XML; scriptLoader.removeEventListener(Event.COMPLETE, onImageSaved); scriptData = new XML(scriptLoader.data); } private function onStatusMessage(e:StatusEvent):void{ switch (e.code){ case "showActivity": if (((splashScreen) && (contains(splashScreen)))){ removeChild(splashScreen); }; addChild(activityScreen); break; case "showHelp": if (((splashScreen) && (contains(splashScreen)))){ removeChild(splashScreen); }; addChild(helpScreen); break; case "tutorialDone": removeChild(helpScreen); addChild(activityScreen); break; default: break; }; } override public function getAssetsPath():void{ super.getAssetsPath(); StringsManager.loadText((HubWorldGame.gameAssetsURL + "strings.xml"), this, stringsDidLoad); } public function get currentScreen():uint{ var content:DisplayObject; if (numChildren){ content = getChildAt(0); switch (content){ case splashScreen: return (1); case helpScreen: return (2); case activityScreen: return (3); default: break; }; }; return (0); } private function onConfigLoaded(e:Event):void{ configLoader.removeEventListener(Event.COMPLETE, onConfigLoaded); config = new XML(e.target.data); if (config.hasOwnProperty("runControl")){ ClickNColorActivity.parseConfig(config.runControl[0]); }; splashScreen = new SplashScreen(config.screens.splash[0]); addChild(splashScreen); helpScreen = new TutorialScreen(config.screens.tutorial[0]); activityScreen = new ActivityScreen(config.screens.activity[0]); trace("three screens created"); } public function dbug(... _args):void{ var debugText:String; debugText = _args.join(" "); if (this["readout"]){ this["readout"].text = ""; this["readout"].appendText((debugText + "\n")); }; trace(debugText); } private function onAddedToStage(e:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); addEventListener(StatusEvent.STATUS, onStatusMessage); trace("onHW is", ClickNColorActivity.runningOnHubWorld); if (!ClickNColorActivity.runningOnHubWorld){ getAssetsPath(); }; } public function saveImage(sourceObj:IBitmapDrawable, fileName:String, fileType:String):void{ var img:ByteArray; var dotPos:int; var imgName:String; var contentTypeHeader:URLRequestHeader; var req:URLRequest; var ext:String; if (!fileName){ throw (new Error("Can't save an image without a proper file name")); }; switch (fileType){ case "jpg": case "jpeg": case "JPG": case "JPEG": img = ImageEncoder.JPEGEncoding(sourceObj); break; case "png": case "PNG": img = ImageEncoder.PNGEncoding(sourceObj); break; default: throw (new Error("Don't know how to encode images to", fileType)); }; if (!img){ throw (new Error("Failed to encode image to", fileType)); }; dotPos = fileName.indexOf("."); if (dotPos > -1){ if ((fileName.length - dotPos) <= 4){ ext = fileName.substr((dotPos + 1)); if (ext == fileType){ fileName = fileName.substr(0, dotPos); }; }; }; imgName = ((fileName + ".") + fileType); contentTypeHeader = new URLRequestHeader("Content-type", "application/octet-stream"); req = new URLRequest(("creation_agent.php?action=save&name=" + imgName)); req.requestHeaders.push(contentTypeHeader); req.method = URLRequestMethod.POST; req.data = img; scriptLoader.addEventListener(Event.COMPLETE, onImageSaved); scriptLoader.load(req); } public static function reportClick(eventCode:String):void{ var hubWorldGame:Object; var eventCode = eventCode; hubWorldGame = getDefinitionByName("com.kid360.hubworld.HubWorldWrapper"); //unresolved jump var _slot1 = e; if (hubWorldGame){ trace((("won't report click with code |" + eventCode) + "|, SiteCatalyst unavailable within HubWorld")); return; }; if (ExternalInterface.available){ if (Capabilities.playerType == "PlugIn"){ trace((("reporting click with code |" + eventCode) + "|")); ExternalInterface.call("clickEvent", eventCode, "event75"); } else { trace((("would have reported click with code |" + eventCode) + "| if we had an HTML wrapper")); }; }; } public static function parseConfig(newConfig:XML):void{ if (newConfig.hasOwnProperty("printOutput")){ if (((("fullPage" == newConfig.printOutput)) || (("foldedCard" == newConfig.printOutput)))){ appConfig.printOutput = newConfig.printOutput; }; }; } public static function get defaultConfig():XML{ return (<runControl> <printOutput>fullPage</printOutput> </runControl> ); } public static function get runningOnHubWorld():Boolean{ var hubWorldGame:Object; hubWorldGame = getDefinitionByName("com.kid360.hubworld.HubWorldWrapper"); //unresolved jump var _slot1 = e; return (!((null == hubWorldGame))); } } }//package com.kid360.hasbro.clickncolor
Section 24
//ClickNColorActivityWithSplash (com.kid360.hasbro.clickncolor.ClickNColorActivityWithSplash) package com.kid360.hasbro.clickncolor { import flash.display.*; import flash.utils.*; import flash.events.*; import com.kid360.hasbro.clickncolor.buttons.*; import com.kid360.hubworld.*; import com.kid360.i18n.*; import com.kid360.*; import flash.net.*; import flash.external.*; import flash.system.*; public class ClickNColorActivityWithSplash extends HubWorldGame { private var configLoader:URLLoader; private var splashScreenSplashScreen:SplashScreenSplashScreen; private var helpScreen:TutorialScreen; private var numAssetsToLoad:int;// = -1 private var activityScreen:ActivityScreen; public var config:XML; private var splashScreen:SplashScreen; private var scriptLoader:URLLoader; public static var appConfig:XML = defaultConfig; public function ClickNColorActivityWithSplash(){ numAssetsToLoad = -1; super(); configLoader = new URLLoader(); configLoader.addEventListener(Event.COMPLETE, onConfigLoaded); scriptLoader = new URLLoader(); addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } private function showChildren():void{ var i:int; i = 0; while (i < numChildren) { trace(i, getChildAt(i)); i++; }; } private function onImageSaved(e:Event):void{ var scriptData:XML; scriptLoader.removeEventListener(Event.COMPLETE, onImageSaved); scriptData = new XML(scriptLoader.data); } public function idForAssetPath(assetPath:String):String{ var zeroPad:Function; var categoryNum:int; var itemList:XMLList; var i:int; var assetPath = assetPath; zeroPad = function (s:String, targetLength:int=3):String{ while (s.length < targetLength) { s = ("0" + s); }; return (s); }; categoryNum = 0; while (categoryNum < config..category.length()) { itemList = config..category[categoryNum]..item; i = 0; while (i < itemList.length()) { if (assetPath == itemList[i].@src){ trace("eureka!", assetPath, "is item number", i, "of", itemList.length(), "in category", categoryNum); return ((String((categoryNum + 1)) + zeroPad(i, 3))); }; i = (i + 1); }; categoryNum = (categoryNum + 1); }; return (""); } private function stringsDidLoad():void{ trace("Let's load config:", (HubWorldGame.gameAssetsURL + "config.xml")); configLoader.load(new URLRequest((HubWorldGame.gameAssetsURL + "config.xml"))); } private function onStatusMessage(e:StatusEvent):void{ var _local2:WorkspaceBackdrop; trace("activity gets status", e.code); switch (e.code){ case "assetsLoading": if (-1 == numAssetsToLoad){ numAssetsToLoad = parseInt(e.level); }; trace(e.level, "assets not loaded out of", numAssetsToLoad); splashScreenSplashScreen.showLoading(numAssetsToLoad, parseInt(e.level)); break; case "splashReady": trace("splashready, numch", numChildren, getChildAt(0)); splashScreen.visible = true; removeChild(splashScreenSplashScreen); splashScreenSplashScreen.cleanUp(); splashScreenSplashScreen = null; break; case "showActivity": if (((splashScreen) && (contains(splashScreen)))){ removeChild(splashScreen); }; addChild(activityScreen); break; case "showHelp": splashScreen.activated = false; if (1 == numChildren){ if (ExternalInterface.available){ if ((((Capabilities.playerType == "PlugIn")) || ((Capabilities.playerType == "ActiveX")))){ ExternalInterface.call("weddingTrack.gameStart", "cake"); }; }; addChildAt(helpScreen, 0); } else { addChild(helpScreen); }; break; case "VideoStart": if (((splashScreen) && (contains(splashScreen)))){ removeChild(splashScreen); }; trace("video starting now"); break; case "tutorialDone": removeChild(helpScreen); _local2 = new WorkspaceBackdrop(); _local2.x = 148; addChild(_local2); addChild(activityScreen); break; default: break; }; } override public function getAssetsPath():void{ super.getAssetsPath(); StringsManager.loadText((HubWorldGame.gameAssetsURL + "strings.xml"), this, stringsDidLoad); } public function get currentScreen():uint{ var content:DisplayObject; if (numChildren){ content = getChildAt(0); switch (content){ case splashScreen: return (1); case helpScreen: return (2); case activityScreen: return (3); default: break; }; }; return (0); } private function onConfigLoaded(e:Event):void{ configLoader.removeEventListener(Event.COMPLETE, onConfigLoaded); config = new XML(e.target.data); if (config.hasOwnProperty("runControl")){ ClickNColorActivityWithSplash.parseConfig(config.runControl[0]); }; splashScreenSplashScreen = (addChild(new SplashScreenSplashScreen()) as SplashScreenSplashScreen); splashScreen = new SplashScreen(config.screens.splash[0]); splashScreen.visible = false; trace("config has loaded, so overlay splash on first splash, numch", numChildren); addChild(splashScreen); helpScreen = new TutorialScreen(config.screens.tutorial[0]); activityScreen = new ActivityScreen(config.screens.activity[0]); trace("three screens created"); } public function dbug(... _args):void{ var debugText:String; debugText = _args.join(" "); if (this["readout"]){ this["readout"].text = ""; this["readout"].appendText((debugText + "\n")); }; trace(debugText); } private function onAddedToStage(e:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); addEventListener(StatusEvent.STATUS, onStatusMessage); trace("onHW is", ClickNColorActivity.runningOnHubWorld, "numch", numChildren); if (!ClickNColorActivity.runningOnHubWorld){ getAssetsPath(); }; } public function assetForID(assetID:String):XML{ var categoryNum:int; var assetNum:int; categoryNum = (parseInt(assetID.substr(0, 1)) - 1); assetNum = parseInt(assetID.substr(1, 3)); return (config..category[categoryNum]..item[assetNum]); } public function saveImage(sourceObj:IBitmapDrawable, fileName:String, fileType:String):void{ var img:ByteArray; var dotPos:int; var imgName:String; var contentTypeHeader:URLRequestHeader; var req:URLRequest; var ext:String; if (!fileName){ throw (new Error("Can't save an image without a proper file name")); }; switch (fileType){ case "jpg": case "jpeg": case "JPG": case "JPEG": img = ImageEncoder.JPEGEncoding(sourceObj); break; case "png": case "PNG": img = ImageEncoder.PNGEncoding(sourceObj); break; default: throw (new Error("Don't know how to encode images to", fileType)); }; if (!img){ throw (new Error("Failed to encode image to", fileType)); }; dotPos = fileName.indexOf("."); if (dotPos > -1){ if ((fileName.length - dotPos) <= 4){ ext = fileName.substr((dotPos + 1)); if (ext == fileType){ fileName = fileName.substr(0, dotPos); }; }; }; imgName = ((fileName + ".") + fileType); contentTypeHeader = new URLRequestHeader("Content-type", "application/octet-stream"); req = new URLRequest(("creation_agent.php?action=save&name=" + imgName)); req.requestHeaders.push(contentTypeHeader); req.method = URLRequestMethod.POST; req.data = img; scriptLoader.addEventListener(Event.COMPLETE, onImageSaved); scriptLoader.load(req); } private function onDelayElapsed(e:TimerEvent):void{ } public static function reportClick(eventCode:String):void{ var hubWorldGame:Object; var eventCode = eventCode; hubWorldGame = getDefinitionByName("com.kid360.hubworld.HubWorldWrapper"); //unresolved jump var _slot1 = e; if (hubWorldGame){ trace((("won't report click with code |" + eventCode) + "|, SiteCatalyst unavailable within HubWorld")); return; }; if (ExternalInterface.available){ if (Capabilities.playerType == "PlugIn"){ trace((("reporting click with code |" + eventCode) + "|")); ExternalInterface.call("clickEvent", eventCode, "event75"); } else { trace((("would have reported click with code |" + eventCode) + "| if we had an HTML wrapper")); }; }; } public static function parseConfig(newConfig:XML):void{ if (newConfig.hasOwnProperty("printOutput")){ if (((("fullPage" == newConfig.printOutput)) || (("foldedCard" == newConfig.printOutput)))){ appConfig.printOutput = newConfig.printOutput; }; }; if (newConfig.hasOwnProperty("languageTag")){ appConfig.languageTag = newConfig.languageTag; }; } public static function get defaultConfig():XML{ return (<runControl> <languageTag>en-US</languageTag> <printOutput>fullPage</printOutput> </runControl> ); } public static function get runningOnHubWorld():Boolean{ var hubWorldGame:Object; hubWorldGame = getDefinitionByName("com.kid360.hubworld.HubWorldWrapper"); //unresolved jump var _slot1 = e; return (!((null == hubWorldGame))); } } }//package com.kid360.hasbro.clickncolor
Section 25
//ClickNColorScreen (com.kid360.hasbro.clickncolor.ClickNColorScreen) package com.kid360.hasbro.clickncolor { import flash.display.*; import flash.utils.*; import flash.events.*; import com.kid360.ui.*; public class ClickNColorScreen extends MovieClip { protected var bg:SkinnableSprite; public var assetsPath:String;// = "./" protected var screenConfig:XML; public function ClickNColorScreen(screenConfig:XML=null){ assetsPath = "./"; super(); updateAssetsPath(); bg = new SkinnableSprite(); bg.mouseEnabled = false; addChild(bg); } public function get config():XML{ return (screenConfig); } public function set config(newConfig:XML):void{ if (!newConfig){ return; }; screenConfig = newConfig; trace("superscr sends to bg", newConfig.background.toXMLString()); bg.config = newConfig.background[0]; } protected function updateAssetsPath():void{ var hubWorldGame:Object; hubWorldGame = getDefinitionByName("com.kid360.hubworld.HubWorldGame"); //unresolved jump var _slot1 = e; if (hubWorldGame){ trace((((("updated assetsPath from |" + assetsPath) + "| to |") + (hubWorldGame as Class).gameAssetsURL) + "|")); assetsPath = (hubWorldGame as Class).gameAssetsURL; }; } } }//package com.kid360.hasbro.clickncolor
Section 26
//ColorPalette (com.kid360.hasbro.clickncolor.ColorPalette) package com.kid360.hasbro.clickncolor { import flash.display.*; import flash.events.*; import com.kid360.ui.*; public class ColorPalette extends Sprite { private var paletteConfig:XML; public function ColorPalette(paletteConfig:XML=null){ super(); config = paletteConfig; } public function get config():XML{ return (paletteConfig); } public function set config(newConfig:XML):void{ var lastX:Number; var numColors:int; var i:int; var colorConfig:XML; var choice:PaintBucket; if (!newConfig){ return; }; paletteConfig = newConfig; if (config.hasOwnProperty("@x")){ x = parseFloat(config.@x); }; if (config.hasOwnProperty("@y")){ y = parseFloat(config.@y); }; lastX = 0; numColors = newConfig.children.children().length(); i = 0; while (i < numColors) { colorConfig = newConfig.children.children()[i]; choice = new PaintBucket(newConfig.itemSkin[0]); choice.paintColor = colorConfig; choice.x = lastX; lastX = (lastX + (parseFloat(config.@itemSize) + parseFloat(config.@gap))); addChild(choice); i++; }; } } }//package com.kid360.hasbro.clickncolor
Section 27
//FoldedCardDialog (com.kid360.hasbro.clickncolor.FoldedCardDialog) package com.kid360.hasbro.clickncolor { import flash.display.*; import flash.utils.*; import flash.events.*; import com.kid360.ui.*; import com.kid360.hasbro.clickncolor.buttons.*; public class FoldedCardDialog extends MovieClip { private var messagePager:MessageCarousel; private var fcdConfig:XML; public var cancelBtn:MovieClip; private var btns:Array; public var okBtn:MovieClip; public function FoldedCardDialog(fcdConfig:XML=null){ btns = []; super(); if (fcdConfig){ if (fcdConfig.hasOwnProperty("carousel")){ messagePager = new MessageCarousel(); messagePager.config = fcdConfig.carousel[0]; addChild(messagePager); } else { trace("no carousel config for folded card messages"); }; } else { trace("no config for folded card dialog"); }; cancelBtn.gotoAndStop(1); okBtn.gotoAndStop(1); okBtn.mouseEnabled = false; okBtn.alpha = 0.5; okBtn.buttonMode = (cancelBtn.buttonMode = true); config = fcdConfig; addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } public function get selectedMessage():String{ var msg:String; var i:int; msg = ""; i = 0; while (i < btns.length) { if (btns[i].isPressed){ msg = btns[i].buttonLabel; }; i++; }; return (msg); } public function get config():XML{ return (fcdConfig); } public function set config(newConfig:XML):void{ var i:int; if (!newConfig){ return; }; fcdConfig = newConfig; btns = messagePager.collection.collectionItems; i = 0; while (i < btns.length) { btns[i].buttonLabel = fcdConfig.carousel.collection.message[i]; i++; }; } private function onAddedToStage(e:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); addEventListener(MouseEvent.CLICK, onClick); } private function onClick(e:Event):void{ var btnNum:int; switch (e.target){ case okBtn: case cancelBtn: parent.removeChild(this); break; default: if ((e.target is MessageCarouselButton)){ btnNum = 0; while (btnNum < btns.length) { if (e.target != btns[btnNum]){ btns[btnNum].toggle(false); }; btnNum++; }; okBtn.mouseEnabled = !(("" == selectedMessage)); okBtn.alpha = (okBtn.mouseEnabled) ? 1 : 0.5; }; break; }; } } }//package com.kid360.hasbro.clickncolor
Section 28
//FullPageImposition (com.kid360.hasbro.clickncolor.FullPageImposition) package com.kid360.hasbro.clickncolor { import flash.display.*; import flash.geom.*; import flash.text.*; public class FullPageImposition extends MovieClip { public var legalese:TextField; private var oldImageLoc:Point; public function FullPageImposition(){ super(); } public function set legalText(newMsg:String):void{ legalese.text = newMsg; } public function layout(image:MovieClip, copyrightMsg:String=""):void{ if ("" != copyrightMsg){ legalText = copyrightMsg; }; oldImageLoc = new Point(image.x, image.y); image.x = (image.y = 0); addChildAt(image, 0); } public function get imageHome():Point{ return (oldImageLoc); } } }//package com.kid360.hasbro.clickncolor
Section 29
//GreetingCardImposition (com.kid360.hasbro.clickncolor.GreetingCardImposition) package com.kid360.hasbro.clickncolor { import flash.display.*; import flash.text.*; public class GreetingCardImposition extends MovieClip { private const IMAGE_TOP:Number = 148; private const IMAGE_LEFT:Number = 178; private const IMAGE_WIDTH:Number = 288; private const IMAGE_HEIGHT:Number = 200; public var advertising:TextField; public var greeting:TextField; public var copyright:TextField; public function GreetingCardImposition(coverImage:Bitmap, msg:String, legalese:String="", blurb:String=""){ super(); greeting.wordWrap = true; greeting.autoSize = TextFieldAutoSize.CENTER; greeting.text = msg; if (legalese){ copyright.text = legalese; }; if (blurb){ advertising.text = blurb; }; coverImage.x = (IMAGE_LEFT + (IMAGE_WIDTH / 2)); coverImage.y = (IMAGE_TOP + (IMAGE_HEIGHT / 2)); coverImage.width = IMAGE_WIDTH; coverImage.height = IMAGE_HEIGHT; coverImage.rotation = 180; addChild(coverImage); } } }//package com.kid360.hasbro.clickncolor
Section 30
//PaintBrush (com.kid360.hasbro.clickncolor.PaintBrush) package com.kid360.hasbro.clickncolor { import flash.display.*; import flash.events.*; import com.kid360.ui.*; public class PaintBrush extends MovieClip { private var brushConfig:XML; public var brushCursor:SkinnableSprite; private var _color:uint; public function PaintBrush(brushConfig:XML=null){ super(); mouseChildren = false; brushCursor = new SkinnableSprite(); brushCursor.name = "brushcursor"; addChild(brushCursor); config = brushConfig; } public function set paintColor(newColor:uint):void{ _color = newColor; PaintBucket.setTint((brushCursor.getChildAt(0) as DisplayObjectContainer).getChildAt(1), newColor, tintPercent); } public function get config():XML{ return (brushConfig); } public function set config(newConfig:XML):void{ var cursorSpec:XML; if (!newConfig){ return; }; brushConfig = newConfig; cursorSpec = new XML((("<cursor src='" + newConfig.@src) + "' />")); trace("paintbrush configs cursor:", newConfig.toXMLString()); brushCursor.config = cursorSpec; } public function get paintColor():uint{ return (_color); } public function get tintPercent():Number{ return (parseFloat(brushConfig.@tintPercent)); } } }//package com.kid360.hasbro.clickncolor
Section 31
//PaintBucket (com.kid360.hasbro.clickncolor.PaintBucket) package com.kid360.hasbro.clickncolor { import flash.display.*; import flash.geom.*; import flash.events.*; import com.kid360.ui.*; public class PaintBucket extends MovieClip { private var swatch:Sprite; private var bg:SkinnableSprite; private var colorConfig:XML; private var bucketConfig:XML; public function PaintBucket(colorConfig:XML=null){ super(); mouseChildren = false; bg = new SkinnableSprite(); bg.name = "brushCursorImage"; addChild(bg); config = colorConfig; addEventListener("skinnableSpriteReady", onBackgroundReady); } private function onBackgroundReady(e:Event):void{ var indicator:DisplayObject; var theColor:uint; var thePercent:Number; if (colorConfig){ indicator = (bg.getChildAt(0) as DisplayObjectContainer).getChildAt(1); theColor = parseInt(colorConfig.text(), 16); thePercent = parseFloat(bucketConfig.@tintPercent); setTint(indicator, theColor, thePercent); } else { trace("we have no color to tint the bucket"); }; } public function set paintColor(newColor:XML):void{ colorConfig = newColor; } public function get config():XML{ return (colorConfig); } public function set config(newConfig:XML):void{ var spec:String; if (!newConfig){ return; }; bucketConfig = newConfig; spec = (("<bg src='" + newConfig.@up) + "' "); if (newConfig.hasOwnProperty("@width")){ spec = (spec + (("width='" + newConfig.@width) + "' ")); }; if (newConfig.hasOwnProperty("@height")){ spec = (spec + (("height='" + newConfig.@height) + "' ")); }; spec = (spec + "/>"); bg.config = new XML(spec); } public static function setBrightness(object:DisplayObject, brightness:int):void{ var t:Transform; var ct:ColorTransform; t = new Transform(object); ct = t.colorTransform; ct.redMultiplier = (ct.greenMultiplier = (ct.blueMultiplier = (1 - Math.abs((brightness / 100))))); ct.redOffset = (ct.greenOffset = (ct.blueOffset = ((brightness)>0) ? (brightness * (0x0100 / 100)) : 0)); t.colorTransform = ct; } public static function setTint(object:DisplayObject, rgb:uint, percent:uint=100):void{ var t:Transform; var ct:ColorTransform; var ratio:Number; t = new Transform(object); ct = t.colorTransform; ratio = (percent / 100); ct.redOffset = ((rgb >> 16) * ratio); ct.greenOffset = (((rgb >> 8) & 0xFF) * ratio); ct.blueOffset = ((rgb & 0xFF) * ratio); ct.redMultiplier = (ct.greenMultiplier = (ct.blueMultiplier = (1 - (percent / 100)))); t.colorTransform = ct; } } }//package com.kid360.hasbro.clickncolor
Section 32
//Pasteboard (com.kid360.hasbro.clickncolor.Pasteboard) package com.kid360.hasbro.clickncolor { import flash.display.*; import com.adobe.serialization.json.*; import flash.geom.*; import flash.events.*; import com.kid360.ui.*; public class Pasteboard extends MovieClip { protected var wsHeight:Number; protected var wsWidth:Number; protected var backdropColor:uint;// = 0xFFFFFF protected var pasteboardBackground:WorkspaceAsset; public static const DEFAULT_BG_COLOR:uint = 0xFFFFFF; public function Pasteboard(boardConfig:XML=null, boardItems:XML=null){ backdropColor = DEFAULT_BG_COLOR; super(); config = boardConfig; markup = boardItems; addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } public function get layoutSpec():Object{ var xmlData:XML; var o:Object; var numSprites:int; var i:int; var aSprite:Object; xmlData = markup; o = {}; o.backdrop = {width:xmlData.backdrop.@width, height:xmlData.backdrop.@height, color:xmlData.backdrop.toString()}; if (xmlData.hasOwnProperty("bg")){ o.bg = {x:xmlData.bg.x.toString(), y:xmlData.bg.y.toString(), scaleX:xmlData.bg.scaleX.toString(), scaleY:xmlData.bg.scaleY.toString(), rotation:xmlData.bg.rotation.toString(), src:xmlData.bg.src.toString()}; }; numSprites = xmlData.sprite.length(); if (numSprites){ o.sprites = []; i = 0; while (i < numSprites) { aSprite = {x:xmlData.sprite[i].x.toString(), y:xmlData.sprite[i].y.toString(), scaleX:xmlData.sprite[i].scaleX.toString(), scaleY:xmlData.sprite[i].scaleY.toString(), rotation:xmlData.sprite[i].rotation.toString(), src:xmlData.sprite[i].src.toString(), scale:xmlData.sprite[i].scale.toString(), rotate:xmlData.sprite[i].rotate.toString()}; o.sprites.push(aSprite); i++; }; }; return (o); } public function get layoutAsJSON():String{ return (JSON.encode(layoutSpec)); } protected function showChildren():void{ var i:int; var c:DisplayObject; var detail:String; i = 0; while (i < numChildren) { c = getChildAt(i); detail = ((c is WorkspaceAsset)) ? (c as WorkspaceAsset).config.toXMLString() : "other"; trace(i, c, c.name, detail); i++; }; } public function get bgColor():uint{ return (backdropColor); } public function set bgColor(newColor:uint):void{ backdropColor = newColor; updateBackdrop(); } protected function updateBackdrop():void{ } public function set markup(newMarkup:XML):void{ var spr:XML; if (!newMarkup){ return; }; clear(); if (newMarkup.hasOwnProperty("backdrop")){ bgColor = parseInt(newMarkup.backdrop[0], 16); }; if (newMarkup.hasOwnProperty("bg")){ pasteOne(newMarkup.bg[0]); }; for each (spr in newMarkup.sprite) { pasteOne(spr); }; } public function get markup():XML{ var hex2RGBspec:Function; var spec:XML; var itemSpec:XML; var i:int; var c:DisplayObject; var itemConfig:XML; hex2RGBspec = function (x:uint):String{ var zeroPad:Function; var x = x; zeroPad = function (s:String):String{ while (s.length < 6) { s = ("0" + s); }; return (s); }; return (("0x" + zeroPad(x.toString(16)))); }; spec = <page/> ; spec.backdrop = new XML((((((("<backdrop width=\"" + ??esc_xattr ) + "\" height=\"") + ??esc_xattr ) + "\">") + ??esc_xelem ) + "</backdrop>")); i = 0; while (i < numChildren) { c = getChildAt(i); itemConfig = (c as WorkspaceAsset).config; itemSpec = new XML((("<" + itemConfig.name()) + "/>")); if (itemConfig.hasOwnProperty("src")){ itemSpec.src = itemConfig.src; } else { if (itemConfig.hasOwnProperty("@src")){ itemSpec.src = itemConfig.@src; }; }; itemSpec.x = c.x; itemSpec.y = c.y; itemSpec.scaleX = c.scaleX; itemSpec.scaleY = c.scaleY; itemSpec.rotation = c.rotation; if (itemConfig.hasOwnProperty("scale")){ itemSpec.scale = itemConfig.scale; } else { if (itemConfig.hasOwnProperty("@scale")){ itemSpec.scale = itemConfig.@scale; }; }; if (itemConfig.hasOwnProperty("rotate")){ itemSpec.rotate = itemConfig.rotate; } else { if (itemConfig.hasOwnProperty("@rotate")){ itemSpec.rotate = itemConfig.@rotate; }; }; spec.appendChild(itemSpec); i = (i + 1); }; return (spec); } public function set config(newConfig:XML):void{ var valueForHTMLColor:Function; var newConfig = newConfig; valueForHTMLColor = function (colorSpec:String):uint{ var itsValue:uint; var components:Array; if ("#" == colorSpec.charAt(0)){ colorSpec = colorSpec.slice(1); }; colorSpec = colorSpec.toUpperCase(); if (3 == colorSpec.length){ components = colorSpec.split(""); colorSpec = (((((components[0] + components[0]) + components[1]) + components[1]) + components[2]) + components[2]); }; if (6 != colorSpec.length){ return (0); }; itsValue = parseInt(colorSpec, 16); return ((isNaN(itsValue)) ? 0 : itsValue); }; if (!newConfig){ return; }; if (newConfig.hasOwnProperty("@x")){ x = parseFloat(newConfig.@x); }; if (newConfig.hasOwnProperty("@y")){ y = parseFloat(newConfig.@y); }; if (newConfig.hasOwnProperty("@width")){ wsWidth = parseFloat(newConfig.@width); }; if (newConfig.hasOwnProperty("@height")){ wsHeight = parseFloat(newConfig.@height); }; if (newConfig.hasOwnProperty("@bgColor")){ backdropColor = valueForHTMLColor(newConfig.@bgColor); }; scrollRect = new Rectangle(0, 0, wsWidth, wsHeight); updateBackdrop(); } public function clear():void{ while (numChildren) { removeChildAt(0); }; trace("cleared the pasteboard"); bgColor = DEFAULT_BG_COLOR; } protected function onAddedToStage(e:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } protected function insertBackground(bgConfig:XML):void{ if (pasteboardBackground){ removeChildAt(0); }; pasteboardBackground = new WorkspaceAsset(bgConfig); pasteboardBackground.name = "bg"; addChildAt(pasteboardBackground, 0); } public function pasteOne(assetConfig:XML):void{ var assetType:String; var _local3:WorkspaceAsset; trace("pasting a new", assetConfig.name(), "over", numChildren, "children"); assetType = assetConfig.name(); switch (assetType){ case "bg": assetConfig.displayOrder = "0"; insertBackground(assetConfig); break; case "sprite": trace("addSprite", numChildren); assetConfig.displayOrder = String(numChildren); _local3 = new WorkspaceAsset(assetConfig); _local3.name = ("layer" + String(numChildren)); trace(assetConfig.src, "at", ((assetConfig.x + ",") + assetConfig.y), "scaleX", assetConfig.scaleX, "scaleY", assetConfig.scaleY, "rot", assetConfig.rotation); trace("wsa at", ((_local3.x + ",") + _local3.y)); addChild(_local3); break; default: trace("confused by", assetConfig.name()); break; }; } protected function itemConfig2ScreenSpec(itemConfig:XML, itemWidth:Number=0, itemHeight:Number=0):XML{ var isBackgroundSpec:Function; var itemSpec:XML; var itemConfig = itemConfig; var itemWidth = itemWidth; var itemHeight = itemHeight; isBackgroundSpec = function (config:XML):Boolean{ if (((config.hasOwnProperty("@isBackground")) && (("true" == config.@isBackground[0].toString())))){ return (true); }; return (false); }; if (isBackgroundSpec(itemConfig)){ itemSpec = <bg/> ; itemSpec.x = 0; itemSpec.y = 0; } else { itemSpec = <sprite/> ; itemSpec.x = ((wsWidth - itemWidth) / 2); itemSpec.y = ((wsHeight - itemHeight) / 2); }; itemSpec.scaleX = 1; itemSpec.scaleY = 1; itemSpec.rotation = 0; if (itemConfig.hasOwnProperty("src")){ itemSpec.src = itemConfig.src; } else { if (itemConfig.hasOwnProperty("@src")){ itemSpec.src = itemConfig.@src; }; }; if (itemConfig.hasOwnProperty("scale")){ itemSpec.scale = itemConfig.scale; } else { if (itemConfig.hasOwnProperty("@scale")){ itemSpec.scale = itemConfig.@scale; }; }; if (itemConfig.hasOwnProperty("rotate")){ itemSpec.rotate = itemConfig.rotate; } else { if (itemConfig.hasOwnProperty("@rotate")){ itemSpec.rotate = itemConfig.@rotate; }; }; return (itemSpec); } } }//package com.kid360.hasbro.clickncolor
Section 33
//PrintComposition (com.kid360.hasbro.clickncolor.PrintComposition) package com.kid360.hasbro.clickncolor { import flash.display.*; public class PrintComposition extends MovieClip { private var creation:Pasteboard; public function PrintComposition(markup:XML){ var testCake:XML; var i:int; super(); testCake = <cake> <bg> <x>0</x> <y>0</y> <scaleX>1</scaleX> <scaleY>1</scaleY> <rotation>0</rotation> <src>assets/backgrounds/cake_3.swf</src> </bg> </cake> ; creation = new Pasteboard(<spec x="300" y="143" width="565" height="700"></spec> , markup); creation.scaleX = (creation.scaleY = 0.357); addChild(creation); i = 0; while (i < numChildren) { trace(i, getChildAt(i)); i++; }; } } }//package com.kid360.hasbro.clickncolor
Section 34
//SplashScreen (com.kid360.hasbro.clickncolor.SplashScreen) package com.kid360.hasbro.clickncolor { import flash.display.*; import flash.events.*; import flash.text.*; import com.kid360.ui.*; import com.kid360.net.*; import com.kid360.i18n.*; public class SplashScreen extends MovieClip { public var legalese:TextField; private var bg:SkinnableSprite; private var helpBtn:SkinnableButton; private var goBtn:SkinnableButton; public function SplashScreen(screenConfig:XML=null){ super(); bg = new SkinnableSprite(); addChildAt(bg, 0); helpBtn = new SkinnableButton(); goBtn = new SkinnableButton(); config = screenConfig; legalese.wordWrap = true; legalese.autoSize = "center"; localizeText(legalese, "splash", "legal"); addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } private function frameHook(e:Event):void{ var numAssetsPending:int; numAssetsPending = AssetLoader.pendingAssets; trace("pending", numAssetsPending); if (0 == numAssetsPending){ removeEventListener(Event.ENTER_FRAME, frameHook); addChild(helpBtn); if (goBtn.config){ trace("gobtn has a config"); addChild(goBtn); }; dispatchEvent(new StatusEvent(StatusEvent.STATUS, true, true, "splashReady")); } else { dispatchEvent(new StatusEvent(StatusEvent.STATUS, true, true, "assetsLoading", numAssetsPending.toString())); }; } public function set config(newConfig:XML):void{ var newConfig = newConfig; bg.config = newConfig.background[0]; helpBtn.config = newConfig.button.("tutorial" == @actionData)[0]; if (newConfig.button.(@actionData == "activity").length()){ goBtn.config = newConfig.button.("activity" == @actionData)[0]; }; } public function set activated(flag:Boolean):void{ if (!flag){ helpBtn.visible = false; }; } private function onAddedToStage(e:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); addEventListener(Event.ENTER_FRAME, frameHook); addEventListener(MouseEvent.CLICK, onClick); } private function localizeText(theField:TextField, screenID:String, blockID:String):void{ var i18n:Object; i18n = StringsManager.getString(screenID, blockID, ClickNColorActivityWithSplash.appConfig.languageTag); if (i18n.x){ theField.x = parseFloat(i18n.x.toString()); }; if (i18n.y){ theField.y = parseFloat(i18n.y); }; theField.text = i18n.text; } private function onClick(e:Event):void{ switch (e.target){ case goBtn: dispatchEvent(new StatusEvent(StatusEvent.STATUS, true, true, "showActivity")); break; case helpBtn: trace("help button was clicked"); dispatchEvent(new StatusEvent(StatusEvent.STATUS, true, true, "showHelp")); break; default: break; }; } } }//package com.kid360.hasbro.clickncolor
Section 35
//TabbedWindow (com.kid360.hasbro.clickncolor.TabbedWindow) package com.kid360.hasbro.clickncolor { import flash.display.*; import flash.events.*; public class TabbedWindow extends MovieClip { private var fcView:FoldedCardPrintSetup; public var btn2:MovieClip; public var btn1:MovieClip; private var fpView:FullPagePrintSetup; public function TabbedWindow(){ super(); btn1.label.text = "Full Page"; btn2.label.text = "Folded Card"; btn1.mouseChildren = (btn2.mouseChildren = false); btn1.buttonMode = (btn2.buttonMode = true); fpView = new FullPagePrintSetup(); fcView = new FoldedCardPrintSetup(); fpView.x = (fpView.y = (fcView.x = (fcView.y = 30))); addChild(fpView); addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } private function onAddedToStage(e:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); addEventListener(MouseEvent.CLICK, onClick); } private function onClick(e:Event):void{ switch (e.target){ case btn1: if (contains(fcView)){ removeChild(fcView); }; if (!contains(fpView)){ addChild(fpView); }; break; case btn2: if (contains(fpView)){ removeChild(fpView); }; if (!contains(fcView)){ addChild(fcView); }; break; default: break; }; } } }//package com.kid360.hasbro.clickncolor
Section 36
//TutorialScreen (com.kid360.hasbro.clickncolor.TutorialScreen) package com.kid360.hasbro.clickncolor { import flash.display.*; import flash.utils.*; import flash.events.*; import com.kid360.ui.*; import com.kid360.view.*; public class TutorialScreen extends MovieClip { private var bg:SkinnableSprite; public var assetsPath:String;// = "./" private var dv:DV; private var screenConfig:XML; public function TutorialScreen(screenConfig:XML=null){ assetsPath = "./"; super(); stop(); dv = new DV(); dv.videoWidth = 865; dv.videoHeight = 700; addChild(dv); updateAssetsPath(); config = screenConfig; addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } private function tutorialDone():void{ var appScreen:uint; var app:DisplayObjectContainer; stage.removeEventListener(MouseEvent.MOUSE_DOWN, onPressed); appScreen = (parent as MovieClip).currentScreen; if (2 == appScreen){ dispatchEvent(new StatusEvent(StatusEvent.STATUS, true, true, "tutorialDone")); } else { app = (stage.getChildAt(0) as DisplayObjectContainer); app.removeChild(this); }; } private function onRemovedFromStage(e:Event):void{ if (dv){ dv.pause(); }; } private function onPressed(e:MouseEvent):void{ trace("a mouseclick dismissed the tutorial"); tutorialDone(); } private function onVideoStopped(e:StatusEvent):void{ if ("VideoStop" == e.code){ tutorialDone(); }; } public function get config():XML{ return (screenConfig); } public function set config(newConfig:XML):void{ if (!newConfig){ return; }; screenConfig = newConfig; if (config.hasOwnProperty("video")){ dv.addEventListener(StatusEvent.STATUS, onVideoStopped); } else { bg = new SkinnableSprite(new XML((("<bg src='" + config.@src[0]) + "' />"))); addChild(bg); }; } private function onAddedToStage(e:Event):void{ if (config.hasOwnProperty("video")){ dv.videoSource = (assetsPath + config.video.@src[0]); dv.play(); }; addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); stage.addEventListener(MouseEvent.MOUSE_DOWN, onPressed, false, 0, true); } private function updateAssetsPath():void{ var hubWorldGame:Object; hubWorldGame = getDefinitionByName("com.kid360.hubworld.HubWorldGame"); //unresolved jump var _slot1 = e; trace("BOO", _slot1.message); if (hubWorldGame){ assetsPath = (hubWorldGame as Class).gameAssetsURL; }; } } }//package com.kid360.hasbro.clickncolor
Section 37
//Workspace (com.kid360.hasbro.clickncolor.Workspace) package com.kid360.hasbro.clickncolor { import flash.display.*; import flash.geom.*; import flash.events.*; import com.senocular.display.transform.*; import com.kid360.ui.*; import com.kid360.hasbro.clickncolor.buttons.*; import com.kid360.display.transform.*; public class Workspace extends Pasteboard { private var csus:ControlSetUniformScale; private var ttool:TransformTool; private var csrus:ControlSetRotUniformScale; private var csns:ControlSetNoScale; private var csrns:ControlSetRotNoScale; private var lastSelected:WorkspaceAsset; private var editing:Boolean; private var csbs:ControlSetBothScale; private var csrbs:ControlSetRotBothScale; public function Workspace(workspaceConfig:XML=null, boardItems:XML=null){ super(workspaceConfig, boardItems); editing = true; csbs = new ControlSetBothScale(); csns = new ControlSetNoScale(); csus = new ControlSetUniformScale(); csrbs = new ControlSetRotBothScale(); csrns = new ControlSetRotNoScale(); csrus = new ControlSetRotUniformScale(); ttool = new TransformTool(csns); ttool.autoRaise = true; ttool.registrationManager.defaultUV = new Point(0.5, 0.5); ttool.negativeScaling = false; addChild(ttool); addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } protected function controlSetForConfig(cfg:XML):Array{ var canRotate:Boolean; var scaleMode:String; var cs:Array; var rotatableSets:Object; var fixedSizeSets:Object; canRotate = (((cfg.@rotate == "yes")) || (("yes" == cfg.rotate))); scaleMode = ((cfg.@scale) || (cfg.scale)); if (!scaleMode){ scaleMode = "none"; }; rotatableSets = {none:csrns, uniform:csrus, free:csrbs}; fixedSizeSets = {none:csns, uniform:csus, free:csbs}; if (canRotate){ cs = rotatableSets[scaleMode]; } else { cs = fixedSizeSets[scaleMode]; }; return (cs); } protected function isWorkspaceAsset(obj:DisplayObject):DisplayObject{ var par:DisplayObjectContainer; if ((obj is Workspace)){ return (null); }; if ((obj is WorkspaceAsset)){ return (obj); }; par = obj.parent; while (par) { if ((par is WorkspaceAsset)){ return (par); }; par = par.parent; }; return (null); } public function set toolCursor(newCursor:DisplayObject):void{ ttool.cursor = newCursor; } protected function onPressed(e:MouseEvent):void{ var pressee:DisplayObject; if (!editing){ trace("not editing, ignore press"); return; }; pressee = isWorkspaceAsset((e.target as DisplayObject)); if (pressee){ if ("sprite" == (pressee as WorkspaceAsset).config.name()){ ttool.setTarget(pressee, e); ttool.controls = controlSetForConfig((pressee as WorkspaceAsset).config); lastSelected = (pressee as WorkspaceAsset); } else { toolTarget = null; }; } else { if (!(e.target is Control)){ toolTarget = null; }; }; } public function get miniString():String{ var layoutDescription:String; var i:int; var c:DisplayObject; layoutDescription = ""; i = 0; while (i < numChildren) { c = getChildAt(i); if ((c is TransformTool)){ } else { layoutDescription = (layoutDescription + (c as WorkspaceAsset).miniString); }; i++; }; return (layoutDescription); } public function addItem(itemWell:AssetCarouselButton):void{ var isBackgroundSpec:Function; var itemConfig:XML; var isBG:Boolean; var itsWidth:Number; var itsHeight:Number; var itemSpec:XML; var newItem:WorkspaceAsset; var itemWell = itemWell; isBackgroundSpec = function (config:XML):Boolean{ var elementName:String; elementName = config.name(); switch (elementName){ case "item": return (((config.hasOwnProperty("@isBackground")) && (("true" == config.@isBackground[0].toString())))); case "bg": return (true); default: break; }; return (false); }; toolTarget = null; itemConfig = itemWell.iconData; isBG = isBackgroundSpec(itemConfig); itsWidth = 0; itsHeight = 0; if (!isBG){ itsWidth = itemWell.iconAsset.width; itsHeight = itemWell.iconAsset.height; }; itemSpec = itemConfig2ScreenSpec(itemConfig, itsWidth, itsHeight); trace("AssetCarousel triggers ws to add item with spec", itemSpec.toXMLString()); trace("workspace at", ((x + ",") + y)); newItem = new WorkspaceAsset(itemSpec); if (!isBG){ newItem.name = ("asset" + numChildren); addChild(newItem); setChildIndex(ttool, 0); } else { newItem.name = "bgnd"; if (numChildren > 1){ if (isBackgroundSpec((getChildAt(1) as WorkspaceAsset).config)){ removeChildAt(1); }; }; addChildAt(newItem, 1); }; } public function get toolInfo():String{ if (!ttool.target){ return (""); }; (ttool.toString() + ", targ"); return (ttool.target.toString()); } override public function get markup():XML{ var hex2RGBspec:Function; var spec:XML; var itemSpec:XML; var i:int; var c:DisplayObject; var assetColors:Array; var paintSpec:XML; var j:int; hex2RGBspec = function (x:uint):String{ var zeroPad:Function; var x = x; zeroPad = function (s:String):String{ while (s.length < 6) { s = ("0" + s); }; return (s); }; return (("0x" + zeroPad(x.toString(16)))); }; spec = <page/> ; spec.backdrop = new XML((((((("<backdrop width=\"" + ??esc_xattr ) + "\" height=\"") + ??esc_xattr ) + "\">") + ??esc_xelem ) + "</backdrop>")); i = 0; while (i < numChildren) { c = getChildAt(i); if ((c is TransformTool)){ } else { itemSpec = (c as WorkspaceAsset).config; itemSpec.x = c.x; itemSpec.y = c.y; itemSpec.scaleX = c.scaleX; itemSpec.scaleY = c.scaleY; itemSpec.rotation = c.rotation; if ((parent as ActivityScreen).canPaint){ assetColors = (c as WorkspaceAsset).layerColors; paintSpec = <coloring/> ; j = 0; while (j < assetColors.length) { if (assetColors[j]){ paintSpec.appendChild(new XML((((("<layer depth=\"" + ??esc_xattr ) + "\">") + ??esc_xelem ) + "</layer>"))); }; j = (j + 1); }; itemSpec.appendChild(paintSpec); }; spec.appendChild(itemSpec); }; i = (i + 1); }; return (spec); } public function set toolTarget(newTarget:DisplayObject):void{ if (null == newTarget){ setChildIndex(ttool, 0); }; ttool.target = newTarget; } override public function clear():void{ var doomed:Array; var i:int; var c:DisplayObject; toolTarget = null; doomed = []; i = 0; while (i < numChildren) { c = getChildAt(i); if ((c is WorkspaceAsset)){ doomed.push(c); }; i++; }; while (doomed.length) { removeChild(doomed.pop()); }; lastSelected = null; trace("cleared the workspace"); bgColor = DEFAULT_BG_COLOR; } override protected function onAddedToStage(e:Event):void{ super.onAddedToStage(e); addEventListener(MouseEvent.MOUSE_DOWN, onPressed); ttool.addEventListener(TransformTool.TARGET_TRANSFORMED, onTTCommit); } public function deleteLastChild():void{ var c:DisplayObject; if (lastSelected){ if (lastSelected == ttool.target){ toolTarget = null; }; removeChild(lastSelected); lastSelected = null; } else { if (numChildren > 1){ c = getChildAt((numChildren - 1)); if ((c is WorkspaceAsset)){ if (c == ttool.target){ toolTarget = null; }; removeChild(c); }; } else { bgColor = Pasteboard.DEFAULT_BG_COLOR; }; }; } protected function onTTCommit(e:Event):void{ var asset:WorkspaceAsset; if (false == ttool.isActive){ asset = (ttool.target as WorkspaceAsset); trace("tt commit on", ttool.target, "spec", asset.config, "x", asset.x, "y", asset.y); }; } public function set editable(flag:Boolean):void{ editing = flag; if (editing){ if (lastSelected){ toolTarget = lastSelected; }; } else { toolTarget = null; }; } public function restoreSelection():void{ if (lastSelected){ toolTarget = lastSelected; }; } } }//package com.kid360.hasbro.clickncolor
Section 38
//WorkspaceAsset (com.kid360.hasbro.clickncolor.WorkspaceAsset) package com.kid360.hasbro.clickncolor { import flash.display.*; import flash.events.*; import com.kid360.ui.*; public class WorkspaceAsset extends SkinnableSprite { public function WorkspaceAsset(assetConfig:XML=null){ super(); config = assetConfig; } public function get layerColors():Array{ var theColors:Array; var assetClip:MovieClip; var i:int; var c:DisplayObject; theColors = []; assetClip = (getChildAt(0) as MovieClip); i = 0; while (i < assetClip.numChildren) { c = assetClip.getChildAt(i); if ((c is MovieClip)){ if (c.hasOwnProperty("layerColor")){ theColors[i] = (c as MovieClip).layerColor.toString(16); } else { theColors[i] = "ffffff"; }; }; i++; }; return (theColors); } public function set coloring(newColoring:XML):void{ var assetClip:MovieClip; var layerSpec:XML; var childNum:uint; var theColor:uint; assetClip = (getChildAt(0) as MovieClip); for each (layerSpec in newColoring.layer) { childNum = parseInt(layerSpec.@depth); theColor = parseInt(layerSpec, 16); PaintBucket.setTint(assetClip.getChildAt(childNum), theColor); }; } public function get miniString():String{ var zeroPad:Function; var assetSpec:String; var rot:Number; zeroPad = function (s:String, targetLength:int=3):String{ while (s.length < targetLength) { s = ("0" + s); }; return (s); }; assetSpec = ""; assetSpec = (assetSpec + (root as ClickNColorActivityWithSplash).idForAssetPath(config.src)); trace("encoding asset x", x, "as", zeroPad(x.toFixed(2), 6)); assetSpec = (assetSpec + zeroPad(x.toFixed(2), 6)); trace("encoding asset y", y, "as", zeroPad(y.toFixed(2), 6)); assetSpec = (assetSpec + zeroPad(y.toFixed(2), 6)); assetSpec = (assetSpec + zeroPad(scaleX.toFixed(2), 4)); assetSpec = (assetSpec + zeroPad(scaleY.toFixed(2), 4)); rot = rotation; if (0 > rot){ rot = (rot + 360); }; assetSpec = (assetSpec + zeroPad(rot.toFixed(2), 6)); trace("returning asset ministring", assetSpec); return (assetSpec.split(".").join("")); } override protected function applySize():void{ super.applySize(); if (((config) && (config.hasOwnProperty("coloring")))){ coloring = config.coloring[0]; }; } public function set layerColors(newColors:Array):void{ var assetClip:MovieClip; var i:int; assetClip = (getChildAt(0) as MovieClip); i = 0; while (i < newColors.length) { if (newColors[i]){ PaintBucket.setTint(assetClip.getChildAt(i), newColors[i]); }; i++; }; } } }//package com.kid360.hasbro.clickncolor
Section 39
//HubWorldGame (com.kid360.hubworld.HubWorldGame) package com.kid360.hubworld { import flash.display.*; import flash.utils.*; import flash.events.*; public class HubWorldGame extends MovieClip implements HubWorldLoadable { public static var insideHubWorld:Boolean; public static var gameAssetsURL:String = "./"; public function HubWorldGame(){ super(); } public function getAssetsPath():void{ var owner:MovieClip; var pathURL:String; var thisFolderPath:String; if ((parent is Loader)){ trace("when parent is Loader, game assumes it is inside HubWorld"); HubWorldGame.insideHubWorld = true; owner = (parent.parent as MovieClip); pathURL = owner.assetsURL; if ("/" != pathURL.substr(-1)){ trace("assets url doesnt end in slash:", pathURL); pathURL = (pathURL + "/"); }; HubWorldGame.gameAssetsURL = pathURL; trace("retrieving path from owner:", HubWorldGame.gameAssetsURL); } else { thisFolderPath = loaderInfo.url.substr(0, (loaderInfo.url.lastIndexOf("/") + 1)); trace("your folder is", loaderInfo.url.substr(0, (loaderInfo.url.lastIndexOf("/") + 1))); trace("parent is not loader, so assets load from", (loaderInfo.url + "./")); HubWorldGame.gameAssetsURL = "./"; HubWorldGame.gameAssetsURL = thisFolderPath; }; } public function set gameState(ba:ByteArray):void{ dispatchEvent(new NetStatusEvent(NetStatusEvent.NET_STATUS, true, true, ba)); } } }//package com.kid360.hubworld
Section 40
//HubWorldLoadable (com.kid360.hubworld.HubWorldLoadable) package com.kid360.hubworld { public interface HubWorldLoadable { function getAssetsPath():void; } }//package com.kid360.hubworld
Section 41
//StringsManager (com.kid360.i18n.StringsManager) package com.kid360.i18n { import flash.display.*; import flash.events.*; import flash.net.*; public class StringsManager extends EventDispatcher { public static const CANONICAL_SUBTAG_SEPARATOR:String = "_"; public static const DEFAULT_LANGUAGE_TAG:String = ((DEFAULT_LANGUAGE + CANONICAL_SUBTAG_SEPARATOR) + DEFAULT_REGION); public static const DEFAULT_REGION:String = "US"; public static const DEFAULT_LANGUAGE:String = "en"; private static var textloader:URLLoader; private static var callback:Function; private static var owner:DisplayObject; public static var i18n:XML; public function StringsManager(){ super(); } private static function tagParts(theTag:String):Array{ var parts:Array; parts = theTag.split(CANONICAL_SUBTAG_SEPARATOR); if (parts.length == 2){ return (parts); }; parts = theTag.split("-"); if (parts.length == 2){ return (parts); }; return ([theTag, ""]); } public static function getString(screenID:String, blockID:String, languageTag:String=""):Object{ var translations:XMLList; var result:XMLList; var screenID = screenID; var blockID = blockID; var languageTag = languageTag; if (languageTag == ""){ languageTag = StringsManager.DEFAULT_LANGUAGE_TAG; }; translations = i18n.screen.(@id == screenID).block.(@id == blockID).text; languageTag = getBestTag(translations, languageTag); if (languageTag){ result = i18n.screen.(@id == screenID).block.(@id == blockID).text.(@lang == languageTag); return ({text:result[0].text(), x:result.@x[0], y:result.@y[0]}); }; return (null); } private static function getBestTag(translations:XMLList, languageTag:String):String{ var tags:XMLList; var subtags:Array; var t:String; tags = translations..@lang; if (tags.contains(languageTag)){ return (languageTag); }; subtags = StringsManager.tagParts(languageTag); if (tags.contains(subtags[0])){ return (subtags[0]); }; for each (t in tags) { if (t.indexOf(subtags[0]) == 0){ return (t); }; }; if (tags.contains(DEFAULT_LANGUAGE_TAG)){ return (DEFAULT_LANGUAGE_TAG); }; if (tags.contains("en")){ return ("en"); }; return (""); } private static function doCallback():void{ if (((!((StringsManager.owner == null))) && (!((StringsManager.callback == null))))){ var _local2 = StringsManager.owner; with (_local2) { StringsManager.callback(); }; }; } private static function onTextLoaded(e:Event):void{ StringsManager.i18n = new XML(StringsManager.canonicalize(e.target.data)); doCallback(); } private static function canonicalize(s:String):String{ return (s.replace(/_/g, CANONICAL_SUBTAG_SEPARATOR)); } public static function loadText(itsFile:String, owner:DisplayObject=null, callback:Function=null):void{ StringsManager.owner = owner; StringsManager.callback = callback; if (StringsManager.i18n){ doCallback(); } else { StringsManager.textloader = new URLLoader(new URLRequest(itsFile)); StringsManager.textloader.addEventListener(Event.COMPLETE, StringsManager.onTextLoaded, false, 0, true); }; } } }//package com.kid360.i18n
Section 42
//AssetLoader (com.kid360.net.AssetLoader) package com.kid360.net { import flash.display.*; import flash.utils.*; import flash.events.*; import flash.net.*; public class AssetLoader extends EventDispatcher { public var loaders:Dictionary; public var assetsPath:String;// = "./" private static var outstandingAssets:int = 0; public function AssetLoader(){ var hubWorldGame:Object; assetsPath = "./"; super(); loaders = new Dictionary(); hubWorldGame = getDefinitionByName("com.kid360.hubworld.HubWorldGame"); //unresolved jump var _slot1 = e; if (hubWorldGame){ assetsPath = (hubWorldGame as Class).gameAssetsURL; }; } public function assetForID(assetID:String):DisplayObject{ var itsLoader:Loader; itsLoader = loaders[assetID]; return (itsLoader.content); } private function onLoadError(e:IOErrorEvent):void{ trace("ioError:", e.text); } private function onAssetLoaded(e:Event):void{ var keyForObject:Function; var itsLoader:Loader; var itsID:String; var e = e; keyForObject = function (dict:Dictionary, theObj):String{ var key:*; for (key in dict) { if (theObj == dict[key]){ return (key); }; }; return (null); }; AssetLoader.outstandingAssets--; e.target.removeEventListener(Event.COMPLETE, onAssetLoaded); itsLoader = (e.target.loader as Loader); itsID = keyForObject(loaders, itsLoader); dispatchEvent(new StatusEvent(StatusEvent.STATUS, true, true, "assetLoaded", itsID)); } public function loadAsset(assetURL:String, assetID:String=""):void{ var loaderNum:*; if (!assetURL){ return; }; if (!assetID){ assetID = "asset1"; }; loaderNum = loaders.length; loaders[assetID] = new Loader(); loaders[assetID].contentLoaderInfo.addEventListener(Event.COMPLETE, onAssetLoaded); loaders[assetID].contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadError); AssetLoader.outstandingAssets++; loaders[assetID].load(new URLRequest((assetsPath + assetURL))); } public static function get pendingAssets():int{ return (outstandingAssets); } } }//package com.kid360.net
Section 43
//Carousel (com.kid360.ui.Carousel) package com.kid360.ui { import flash.display.*; import flash.geom.*; import flash.events.*; import fl.transitions.*; import fl.transitions.easing.*; public class Carousel extends MovieClip implements Configurable { public var movingAxis:String;// = "x" public var prevBtn:InteractiveObject; protected var inMotion:Boolean; public var nextBtn:InteractiveObject; protected var tween:Tween; protected var pageLength:Number; public var collection:Scroller; protected var carouselConfig:XML; public function Carousel(carouselConfig:XML=null){ movingAxis = "x"; super(); collection = (addChild(new Scroller()) as Scroller); collection.name = (name + "Coll"); config = carouselConfig; addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } protected function configValue(propertyName:String):String{ var attributeName:String; if (config.hasOwnProperty(propertyName)){ return (config.child(propertyName)[0]); }; attributeName = ("@" + propertyName); if (config.hasOwnProperty(attributeName)){ return (config.attribute(propertyName)[0]); }; return (""); } private function onRest(e:TweenEvent):void{ inMotion = false; updateButtons(); } public function get config():XML{ return (carouselConfig); } public function updateButtons():void{ nextBtn.visible = (collection.scrollRect[movingAxis] < maxScroll); prevBtn.visible = (collection.scrollRect[movingAxis] > 0); } private function get maxScroll():Number{ return ((collection.contentLength - pageLength)); } public function set config(newConfig:XML):void{ var propertyValue:String; if (!newConfig){ return; }; carouselConfig = newConfig; propertyValue = configValue("x"); if ("" != propertyValue){ x = parseFloat(propertyValue); }; propertyValue = configValue("y"); if ("" != propertyValue){ y = parseFloat(propertyValue); }; collection.config = config.collection[0]; propertyValue = configValue("scrollStep"); if ("" != propertyValue){ pageLength = parseFloat(propertyValue); }; propertyValue = configValue("motion"); if ("" != propertyValue){ movingAxis = (("horizontal" == propertyValue)) ? "x" : "y"; }; } private function onAddedToStage(e:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); updateButtons(); addEventListener(MouseEvent.CLICK, onClick); } private function onMovement(e:TweenEvent):void{ collection.scrollRect = e.target.obj; } public function set itemFilter(filterFunc:Function):void{ collection.filterCollection(filterFunc); updateButtons(); } private function onClick(e:Event):void{ var dir:int; var _local3:Number; if (inMotion){ return; }; switch (e.target){ case prevBtn: case nextBtn: dir = ((e.target == nextBtn)) ? 1 : -1; inMotion = true; _local3 = (collection.scrollRect[movingAxis] + (dir * pageLength)); _local3 = Math.max(0, Math.min(maxScroll, _local3)); tween = new Tween(collection.scrollRect, movingAxis, Back.easeOut, collection.scrollRect[movingAxis], _local3, 1.5, true); tween.addEventListener(TweenEvent.MOTION_CHANGE, onMovement); tween.addEventListener(TweenEvent.MOTION_FINISH, onRest); break; default: break; }; } } }//package com.kid360.ui
Section 44
//CarouselItem (com.kid360.ui.CarouselItem) package com.kid360.ui { import flash.display.*; public class CarouselItem extends MovieClip { protected var scroller:Scroller; public function CarouselItem(container:Scroller){ super(); scroller = container; } public function get itemHeight():Number{ return (height); } public function get itemWidth():Number{ return (width); } } }//package com.kid360.ui
Section 45
//Configurable (com.kid360.ui.Configurable) package com.kid360.ui { public interface Configurable { function get config():XML; function set config(/Users/rich/Projects/Hasbro/mylittlepony.com/ponywedding/cake;com/kid360/ui;Configurable.as:XML):void; } }//package com.kid360.ui
Section 46
//Scroller (com.kid360.ui.Scroller) package com.kid360.ui { import flash.display.*; import flash.utils.*; import flash.geom.*; import flash.events.*; public class Scroller extends Sprite implements Configurable { private var visibleItems:Array; private var collectionConfig:XML; private var allItems:Array; private var itemGap:Number;// = 0 public function Scroller(collectionConfig:XML=null){ allItems = []; visibleItems = []; itemGap = 0; super(); config = collectionConfig; addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } public function positionItems():void{ var firstLoc:Number; var i:int; i = 0; while (i < visibleItems.length) { visibleItems[i][(parent as Carousel).movingAxis] = (i * (itemSize + itemGap)); i++; }; } public function resetScrollRect():void{ var propertyValue:String; var windowWidth:Number; var windowHeight:Number; windowWidth = 100; windowHeight = 100; propertyValue = configValue("width"); if ("" != propertyValue){ windowWidth = parseFloat(propertyValue); }; propertyValue = configValue("height"); if ("" != propertyValue){ windowHeight = parseFloat(propertyValue); }; scrollRect = new Rectangle(0, 0, windowWidth, windowHeight); } public function get isWide():Boolean{ return (("x" == (parent as Carousel).movingAxis)); } public function filterCollection(filterFunc:Function):void{ var trimString:Function; var o:DisplayObject; var filterFunc = filterFunc; trimString = function (s:String):String{ var chars:Array; chars = s.split(""); while ((((" " == chars[0])) || (("\t" == chars[0])))) { chars.shift(); }; while ((((" " == chars[(chars.length - 1)])) || (("\t" == chars[(chars.length - 1)])))) { chars.pop(); }; return (chars.join("")); }; clear(); for each (o in allItems) { if (filterFunc(o)){ visibleItems.push(o); }; }; resetScrollRect(); positionItems(); for each (o in visibleItems) { addChild(o); }; } public function get config():XML{ return (collectionConfig); } protected function configValue(propertyName:String):String{ var attributeName:String; if (config.hasOwnProperty(propertyName)){ return (config.child(propertyName)[0]); }; attributeName = ("@" + propertyName); if (config.hasOwnProperty(attributeName)){ return (config.attribute(propertyName)[0]); }; return (""); } public function set config(newConfig:XML):void{ var propertyValue:String; var btnClass:Class; var g:XML; var btn:DisplayObject; if (!newConfig){ return; }; collectionConfig = newConfig; propertyValue = configValue("gap"); if ("" != propertyValue){ itemGap = parseFloat(propertyValue); }; propertyValue = configValue("x"); if ("" != propertyValue){ x = parseFloat(propertyValue); }; propertyValue = configValue("y"); if ("" != propertyValue){ y = parseFloat(propertyValue); }; resetScrollRect(); propertyValue = configValue("@buttonClass"); if ("" != propertyValue){ btnClass = (getDefinitionByName(propertyValue) as Class); } else { throw (new Error("Can't make a collection of buttons without a class name")); }; for each (g in collectionConfig.*) { btn = new btnClass(this, g); allItems.push(btn); visibleItems.push(btn); btn.addEventListener(Event.COMPLETE, onItemComplete); }; } public function clear():void{ var i:int; i = 0; while (i < visibleItems.length) { if (contains(visibleItems[i])){ removeChild(visibleItems[i]); }; i++; }; visibleItems = []; } protected function onAddedToStage(e:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } public function get itemSize():Number{ return ((isWide) ? allItems[0].itemWidth : allItems[0].itemHeight); } public function get collectionItems():Array{ return (allItems); } public function get contentLength():Number{ return (((visibleItems.length * itemSize) + ((visibleItems.length - 0) * itemGap))); } protected function onItemComplete(e:Event):void{ var o:DisplayObject; e.target.removeEventListener(Event.COMPLETE, onItemComplete); addChild((e.target as DisplayObject)); if (numChildren == allItems.length){ positionItems(); for each (o in allItems) { o.visible = true; }; (parent as Carousel).updateButtons(); }; } } }//package com.kid360.ui
Section 47
//SkinnableButton (com.kid360.ui.SkinnableButton) package com.kid360.ui { import flash.display.*; import flash.utils.*; import flash.events.*; import flash.media.*; import flash.net.*; import flash.ui.*; public class SkinnableButton extends SkinnableSprite { private const clickSound:Sound; private const rollOverSound:Sound; protected var curState:int;// = -1 private var rollOverSoundTimer:Timer; private var depressed:Boolean;// = false protected var toggles:Boolean;// = false protected var faces:Array; private var groupMember:Boolean;// = false public static const INIT_STATE:int = -1; public static const SELECTED_HILITED_STATE:int = 4; public static const IDLE_STATE:int = 0; public static const HILITED_STATE:int = 1; public static const SELECTED_IDLE_STATE:int = 3; public static const SELECTED_DEPRESSED_STATE:int = 5; public static const DEPRESSED_STATE:int = 2; public static const DISABLED_STATE:int = 99; public function SkinnableButton(btnConfig:XML=null){ toggles = false; faces = []; curState = INIT_STATE; depressed = false; groupMember = false; rollOverSound = new Sound(); clickSound = new Sound(); super(); mouseChildren = false; buttonMode = true; config = btnConfig; addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } override protected function applySkin(config:XML):void{ var propertyValue:String; if (!config){ return; }; propertyValue = configValue("up"); if ("" != propertyValue){ assetLoader.loadAsset(propertyValue, "up"); }; propertyValue = configValue("down"); if ("" != propertyValue){ assetLoader.loadAsset(propertyValue, "down"); }; propertyValue = configValue("over"); if ("" != propertyValue){ assetLoader.loadAsset(propertyValue, "over"); }; propertyValue = configValue("selectedUp"); if ("" != propertyValue){ assetLoader.loadAsset(propertyValue, "selectedUp"); }; propertyValue = configValue("selectedDown"); if ("" != propertyValue){ assetLoader.loadAsset(propertyValue, "selectedDown"); }; propertyValue = configValue("selectedOver"); if ("" != propertyValue){ assetLoader.loadAsset(propertyValue, "selectedOver"); }; propertyValue = configValue("clickSound"); if ("" != propertyValue){ clickSound.load(new URLRequest((assetLoader.assetsPath + propertyValue))); }; propertyValue = configValue("rollOverSound"); if ("" != propertyValue){ rollOverSound.load(new URLRequest((assetLoader.assetsPath + propertyValue))); }; propertyValue = configValue("rollOverSoundDelay"); if ("" != propertyValue){ rollOverSoundTimer = new Timer(parseInt(propertyValue), 1); rollOverSoundTimer.addEventListener(TimerEvent.TIMER, onRollOverTimeout); }; propertyValue = configValue("x"); if ("" != propertyValue){ x = parseFloat(propertyValue); }; propertyValue = configValue("y"); if ("" != propertyValue){ y = parseFloat(propertyValue); }; } public function get toggling():Boolean{ return (toggles); } public function set toggling(flag:Boolean):void{ toggles = flag; } public function set state(newState:int):void{ if (newState == curState){ return; }; switch (newState){ case INIT_STATE: break; case DISABLED_STATE: break; case IDLE_STATE: case HILITED_STATE: case DEPRESSED_STATE: case SELECTED_IDLE_STATE: case SELECTED_HILITED_STATE: case SELECTED_DEPRESSED_STATE: showState(newState); break; }; if (faces[newState]){ curState = newState; } else { trace("can't change to state", newState, "without a face, so state remains at", curState); }; mouseEnabled = !((newState == DISABLED_STATE)); alpha = ((newState == DISABLED_STATE)) ? 0.5 : 1; } public function set selected(flag:Boolean):void{ depressed = flag; state = (flag) ? SELECTED_IDLE_STATE : IDLE_STATE; } private function onPressed(e:MouseEvent):void{ state = (selected) ? SELECTED_DEPRESSED_STATE : DEPRESSED_STATE; } private function onReleased(e:MouseEvent):void{ if (clickSound.url){ if (rollOverSoundTimer){ rollOverSoundTimer.reset(); }; clickSound.play(0, 1); }; if (toggling){ if (!grouped){ selected = !(selected); }; }; state = (selected) ? SELECTED_HILITED_STATE : HILITED_STATE; } public function get grouped():Boolean{ return (groupMember); } private function onRollOverTimeout(e:TimerEvent):void{ rollOverSound.play(0, 1); } public function get state():int{ return (curState); } private function keyUpHandler(event:KeyboardEvent):void{ if (event.keyCode == Keyboard.SPACE){ dispatchEvent(new MouseEvent(MouseEvent.CLICK)); }; } private function onAddedToStage(e:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); addEventListener(MouseEvent.MOUSE_OVER, onRolled); addEventListener(MouseEvent.MOUSE_OUT, onRolledOut); addEventListener(MouseEvent.MOUSE_DOWN, onPressed); addEventListener(MouseEvent.MOUSE_UP, onReleased); addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); } public function assetForID(assetID:String):DisplayObject{ return (assetLoader.assetForID(assetID)); } public function get selected():Boolean{ return (depressed); } protected function onRolledOut(e:MouseEvent):void{ if (mouseEnabled){ state = (selected) ? SELECTED_IDLE_STATE : IDLE_STATE; }; } override protected function onAssetLoaded(e:StatusEvent):void{ var assetID:String; var faceNum:int; assetID = e.level; faceNum = ["up", "over", "down", "selectedUp", "selectedOver", "selectedDown"].indexOf(assetID); if (faceNum > -1){ faces[faceNum] = assetLoader.assetForID(assetID); switch (assetID){ case "up": curState = IDLE_STATE; addChild(faces[faceNum]); dispatchEvent(new Event("skinnableButtonReady", true)); break; default: break; }; }; applySize(); } protected function showState(btnState:int):void{ if (btnState == INIT_STATE){ return; }; if (faces[btnState]){ if (((faces[curState]) && (contains(faces[curState])))){ removeChild(faces[curState]); }; addChild(faces[btnState]); }; } public function set grouped(flag:Boolean):void{ groupMember = flag; } protected function onRolled(e:MouseEvent):void{ if (mouseEnabled){ if (rollOverSound.url){ if (rollOverSoundTimer){ rollOverSoundTimer.reset(); rollOverSoundTimer.start(); } else { rollOverSound.play(0, 1); }; }; state = (selected) ? SELECTED_HILITED_STATE : HILITED_STATE; }; } public static function stateName(theState:uint):String{ if (theState == DISABLED_STATE){ return ("Disabled"); }; return (["Init", "Up", "Hilite", "Pushed", "Selectup", "SelectHilite", "SelectPushed"][(theState + 1)]); } } }//package com.kid360.ui
Section 48
//SkinnableCarousel (com.kid360.ui.SkinnableCarousel) package com.kid360.ui { import flash.display.*; import flash.events.*; public class SkinnableCarousel extends Carousel { public function SkinnableCarousel(carouselConfig:XML=null){ super(); nextBtn = new SkinnableButton(); nextBtn.name = "skcarNext"; addChild(nextBtn); prevBtn = new SkinnableButton(); prevBtn.name = "skcarPrev"; addChild(prevBtn); collection = (addChild(new Scroller()) as Scroller); config = carouselConfig; } override public function set config(newConfig:XML):void{ var propertyValue:String; var newConfig = newConfig; if (!newConfig){ return; }; carouselConfig = newConfig; var _local3 = configValue("x"); propertyValue = _local3; if ("" != _local3){ x = parseFloat(propertyValue); }; _local3 = configValue("y"); propertyValue = _local3; if ("" != _local3){ y = parseFloat(propertyValue); }; (nextBtn as SkinnableButton).config = config.button.("pageDown" == @action)[0]; (prevBtn as SkinnableButton).config = config.button.("pageUp" == @action)[0]; collection.config = config.collection[0]; _local3 = configValue("scrollStep"); propertyValue = _local3; if ("" != _local3){ pageLength = parseFloat(propertyValue); }; _local3 = configValue("motion"); propertyValue = _local3; if ("" != _local3){ movingAxis = (("horizontal" == propertyValue)) ? "x" : "y"; }; } } }//package com.kid360.ui
Section 49
//SkinnableCarouselItem (com.kid360.ui.SkinnableCarouselItem) package com.kid360.ui { public class SkinnableCarouselItem extends SkinnableButton { protected var scroller:Scroller; public function SkinnableCarouselItem(container:Scroller){ super(); scroller = container; } public function get itemHeight():Number{ return (height); } public function get itemWidth():Number{ return (width); } } }//package com.kid360.ui
Section 50
//SkinnableSprite (com.kid360.ui.SkinnableSprite) package com.kid360.ui { import flash.display.*; import flash.events.*; import com.kid360.net.*; public class SkinnableSprite extends Sprite implements Configurable { protected var assetLoader:AssetLoader; protected var skinConfig:XML; public static const SKINNABLE_SPRITE_READY:String = "skinnableSpriteReady"; public function SkinnableSprite(spriteConfig:XML=null){ super(); assetLoader = new AssetLoader(); assetLoader.addEventListener(StatusEvent.STATUS, onAssetLoaded, false, 0, true); config = spriteConfig; } protected function applySkin(config:XML):void{ var propertyValue:String; if (!config){ return; }; propertyValue = configValue("src"); if ("" != propertyValue){ assetLoader.loadAsset(propertyValue); } else { propertyValue = configValue("bgColor"); if ("" != propertyValue){ if (((configValue("width")) && (configValue("height")))){ showBackdrop(parseInt(propertyValue, 16), parseFloat(configValue("width")), parseFloat(configValue("height"))); } else { throw (new Error("Can't fill backdrop without a width and height")); }; }; }; propertyValue = configValue("x"); if ("" != propertyValue){ x = parseFloat(propertyValue); }; propertyValue = configValue("y"); if ("" != propertyValue){ y = parseFloat(propertyValue); }; } public function get asset1():DisplayObject{ return (assetLoader.assetForID("asset1")); } public function get config():XML{ return (skinConfig); } protected function configValue(propertyName:String):String{ return (xmlValue(config, propertyName)); } public function showBackdrop(itsColor:uint, itsWidth:Number, itsHeight:Number):void{ var itsColor = itsColor; var itsWidth = itsWidth; var itsHeight = itsHeight; if (!itsWidth){ return; }; if (!itsHeight){ return; }; var _local5 = graphics; with (_local5) { beginFill(itsColor); drawRect(0, 0, itsWidth, itsHeight); }; } public function set config(newConfig:XML):void{ skinConfig = newConfig; applySkin(skinConfig); } protected function applySize():void{ var propertyValue:String; if (!config){ return; }; propertyValue = configValue("width"); if ("" != propertyValue){ width = parseFloat(propertyValue); }; propertyValue = configValue("height"); if ("" != propertyValue){ height = parseFloat(propertyValue); }; propertyValue = configValue("scaleX"); if ("" != propertyValue){ scaleX = parseFloat(propertyValue); }; propertyValue = configValue("scaleY"); if ("" != propertyValue){ scaleY = parseFloat(propertyValue); }; propertyValue = configValue("rotation"); if ("" != propertyValue){ rotation = parseFloat(propertyValue); }; } protected function xmlValue(xmlData:XML, propertyName:String):String{ var attributeName:String; if (xmlData.hasOwnProperty(propertyName)){ return (xmlData.child(propertyName)[0]); }; attributeName = ("@" + propertyName); if (xmlData.hasOwnProperty(attributeName)){ return (xmlData.attribute(propertyName)[0]); }; return (""); } protected function onAssetLoaded(e:StatusEvent):void{ addChild(assetLoader.assetForID(e.level)); applySize(); dispatchEvent(new Event("skinnableSpriteReady", true)); } } }//package com.kid360.ui
Section 51
//DV (com.kid360.view.DV) package com.kid360.view { import flash.display.*; import flash.utils.*; import flash.events.*; import flash.media.*; import flash.net.*; public class DV extends Sprite { private var vid:Video; private var timeoutID:uint; private var DVSource:String; private var nc:NetConnection; private var ns:NetStream; private var metad:Object; public function DV(){ super(); vid = new Video(480, 320); addChild(vid); nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, nsEventHandler); nc.connect(null); } public function set videoHeight(newHeight:Number):void{ vid.height = newHeight; } public function set videoSource(newSource:String):void{ DVSource = newSource; } private function connectStream(theClip:String=""):void{ trace("connecting stream", theClip); ns = new NetStream(nc); ns.addEventListener(NetStatusEvent.NET_STATUS, nsEventHandler); ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); ns.client = this; vid.attachNetStream(ns); if (theClip){ ns.play(theClip); } else { trace("no clip to show, so no playing for you"); }; } public function set videoWidth(newWidth:Number):void{ vid.width = newWidth; } public function play():void{ if (DVSource){ connectStream(DVSource); } else { throw (new Error("Can't play a video without a videoSource")); }; } public function onMetaData(md:Object):void{ metad = md; } private function asyncErrorHandler(e:AsyncErrorEvent):void{ trace("async error:", e.error); } private function nsEventHandler(e:NetStatusEvent):void{ trace("handling netstatus", e.info.code); switch (e.info.code){ case "NetConnection.Connect.Success": trace("NetConnection has connected"); break; case "NetStream.Play.StreamNotFound": trace("Can't find video"); break; case "NetStream.Play.Start": trace("received vidstart, time:", ns.time); timeoutID = setTimeout(notifyVideoStart, 50); break; case "NetStream.Play.Stop": dispatchEvent(new StatusEvent(StatusEvent.STATUS, true, true, "VideoStop")); break; case "NetStream.Seek.Notify": case "NetStream.Buffer.Empty": case "NetStream.Buffer.Full": case "NetStream.Buffer.Flush": break; default: trace(("VideoPane: unknown net status event: " + e.info.code)); break; }; } private function notifyVideoStart():void{ clearTimeout(timeoutID); dispatchEvent(new StatusEvent(StatusEvent.STATUS, true, true, "VideoStart")); } public function pause():void{ ns.pause(); } } }//package com.kid360.view
Section 52
//ImageEncoder (com.kid360.ImageEncoder) package com.kid360 { import com.adobe.images.*; import flash.display.*; import flash.utils.*; import flash.events.*; public class ImageEncoder extends EventDispatcher { public static const TYPE_PNG:uint = 2; private static const DEFAULT_JPEG_QUALITY:Number = 80; public static const TYPE_JPEG:uint = 1; public function ImageEncoder(){ super(); } public static function PNGEncoding(sourceObj:IBitmapDrawable):ByteArray{ return (ImageEncoder.encode(sourceObj, ImageEncoder.TYPE_PNG)); } private static function encode(sourceObj:IBitmapDrawable, imageType:uint=1, jpegQuality:uint=0):ByteArray{ var result:ByteArray; var srcWidth:Number; var srcHeight:Number; var jpegEncoder:JPGEncoder; var bmd:BitmapData; if (0 == jpegQuality){ jpegQuality = ImageEncoder.DEFAULT_JPEG_QUALITY; }; if ((sourceObj is DisplayObject)){ srcWidth = (sourceObj as DisplayObject).width; srcHeight = (sourceObj as DisplayObject).height; } else { if ((sourceObj is BitmapData)){ srcWidth = (sourceObj as BitmapData).width; srcHeight = (sourceObj as BitmapData).height; } else { throw (new Error((("mysterious sourceObj " + sourceObj) + " claims to be IBitmapDrawable"))); }; }; bmd = new BitmapData(srcWidth, srcHeight); bmd.draw(sourceObj); switch (imageType){ case ImageEncoder.TYPE_JPEG: jpegEncoder = new JPGEncoder(jpegQuality); result = jpegEncoder.encode(bmd); break; case ImageEncoder.TYPE_PNG: result = PNGEncoder.encode(bmd); }; return (result); } public static function JPEGEncoding(sourceObj:IBitmapDrawable):ByteArray{ return (ImageEncoder.encode(sourceObj, ImageEncoder.TYPE_JPEG)); } } }//package com.kid360
Section 53
//PrintQueue (com.kid360.PrintQueue) package com.kid360 { import flash.display.*; import flash.geom.*; import flash.printing.*; public class PrintQueue extends Sprite { private var theQueue:Array; private var marginThickness:Number;// = 18 private var paperSize:Rectangle; private var pj:PrintJob; public function PrintQueue(pages:Array){ marginThickness = 18; super(); visible = false; theQueue = pages; pj = new PrintJob(); paperSize = new Rectangle(); } private function fitToPage(obj:Rectangle, pg:Rectangle):Object{ var pageIsWide:Boolean; var objIsWide:Boolean; var scaleFactor:Number; var needsRotate:Boolean; pageIsWide = (pg.width > pg.height); objIsWide = (obj.width > obj.height); if (pageIsWide){ scaleFactor = (pg.width / (objIsWide) ? obj.width : obj.height); needsRotate = !(objIsWide); } else { scaleFactor = (pg.height / (objIsWide) ? obj.width : obj.height); needsRotate = objIsWide; }; return ({scale:scaleFactor, rot:needsRotate}); } private function drawUnderlay(width:Number, height:Number):void{ var width = width; var height = height; var _local4 = graphics; with (_local4) { lineStyle(); beginFill(0xFFFFFF); drawRect(0, 0, width, height); endFill(); }; } public function set margin(newMargin:Number):void{ marginThickness = Math.abs(newMargin); } public function get isWidePaper():Boolean{ return ((paperSize.width > paperSize.height)); } public function get margin():Number{ return (marginThickness); } private function centerOnPage(obj:DisplayObject, pg:Rectangle):void{ var hMargin:Number; var vMargin:Number; hMargin = ((pg.width - obj.width) / 2); vMargin = ((pg.height - obj.height) / 2); obj.x = (hMargin + ((obj.rotation == 90)) ? obj.width : 0); obj.y = vMargin; } public function print():Boolean{ var queueSize:int; var pageContent:DisplayObject; var fitSpec:Object; if (pj.start()){ paperSize.width = (pj.pageWidth - marginThickness); paperSize.height = (pj.pageHeight - marginThickness); drawUnderlay(paperSize.width, paperSize.height); queueSize = 0; for (;theQueue.length > 0;continue, (var _local3:* = #InvalidMultinameIndex#), continue, 0, throw (_local3), removeChild(pageContent), //unexpected switch ) { pageContent = theQueue.shift(); fitSpec = fitToPage(pageContent.getBounds(pageContent), paperSize); pageContent.scaleX = (pageContent.scaleY = fitSpec.scale); if (fitSpec.rot){ pageContent.rotation = 90; }; centerOnPage(pageContent, paperSize); addChild(pageContent); pj.addPage(this); queueSize = (queueSize + 1); continue; var _slot1 = e; trace(_slot1.message); }; if (queueSize > 0){ pj.send(); }; return ((queueSize > 0)); }; return (false); } } }//package com.kid360
Section 54
//Control (com.senocular.display.transform.Control) package com.senocular.display.transform { import flash.display.*; import flash.events.*; public class Control extends Sprite { private var _fillAlpha:Number;// = 1 private var _fillColor:uint;// = 0xFFFFFF private var _lineColor:uint;// = 0 private var _lineAlpha:Number;// = 1 private var _tool:TransformTool; private var _lineThickness:Number;// = 0 public function Control(){ _fillColor = 0xFFFFFF; _lineColor = 0; _fillAlpha = 1; _lineAlpha = 1; _lineThickness = 0; super(); addEventListener(Event.ADDED, added, true); addEventListener(Event.ADDED_TO_STAGE, addedToStage); addEventListener(Event.REMOVED_FROM_STAGE, removedFromStage); } protected function added(event:Event):void{ draw(); } protected function targetChanged(event:Event):void{ } protected function addedToStage(event:Event):void{ var tool:TransformTool; tool = (parent as TransformTool); if (tool != null){ this.tool = tool; draw(); } else { this.tool = null; }; } protected function removedFromStage(event:Event):void{ this.tool = null; } public function set fillAlpha(value:Number):void{ _fillAlpha = value; } public function set tool(value:TransformTool):void{ if (value == _tool){ return; }; cleanupTool(); _tool = value; setupTool(); } public function draw():void{ } public function set fillColor(value:uint):void{ _fillColor = value; } protected function cleanupTool():void{ if (_tool){ _tool.removeEventListener(TransformTool.REDRAW, redraw); _tool.removeEventListener(TransformTool.TARGET_CHANGED, targetChanged); }; } public function get tool():TransformTool{ return (_tool); } public function get fillColor():uint{ return (_fillColor); } public function set lineAlpha(value:Number):void{ _lineAlpha = value; } public function set lineColor(value:uint):void{ _lineColor = value; } public function get fillAlpha():Number{ return (_fillAlpha); } protected function setupTool():void{ if (_tool){ _tool.addEventListener(TransformTool.REDRAW, redraw); _tool.addEventListener(TransformTool.TARGET_CHANGED, targetChanged); redraw(null); }; } public function set lineThickness(value:Number):void{ _lineThickness = value; } public function get lineAlpha():Number{ return (_lineAlpha); } public function get lineColor():uint{ return (_lineColor); } public function get lineThickness():Number{ return (_lineThickness); } public function redraw(event:Event):void{ } } }//package com.senocular.display.transform
Section 55
//ControlBorder (com.senocular.display.transform.ControlBorder) package com.senocular.display.transform { import flash.events.*; public class ControlBorder extends Control { public function ControlBorder(){ mouseEnabled = false; super(); } override public function draw():void{ super.draw(); redraw(null); } override public function redraw(event:Event):void{ var tool:TransformTool; var event = event; super.redraw(event); tool = this.tool; if (tool == null){ return; }; var _local3 = graphics; with (_local3) { clear(); lineStyle(this.lineThickness, this.lineColor, this.lineAlpha); moveTo(tool.topLeft.x, tool.topLeft.y); lineTo(tool.topRight.x, tool.topRight.y); lineTo(tool.bottomRight.x, tool.bottomRight.y); lineTo(tool.bottomLeft.x, tool.bottomLeft.y); lineTo(tool.topLeft.x, tool.topLeft.y); }; } } }//package com.senocular.display.transform
Section 56
//ControlCursor (com.senocular.display.transform.ControlCursor) package com.senocular.display.transform { import flash.display.*; import flash.geom.*; import flash.events.*; public class ControlCursor extends Sprite { protected var mouseActive:Boolean;// = false protected var activeTarget:IEventDispatcher; private var _cursor:DisplayObject; private var _tool:TransformTool; private var _offset:Point; public function ControlCursor(offset:Point=null){ _offset = new Point(20, 28); mouseActive = false; super(); mouseEnabled = false; if (offset){ this.offset = offset; }; addEventListener(Event.ADDED_TO_STAGE, addedToStage); addEventListener(Event.REMOVED_FROM_STAGE, removedFromStage); } protected function targetChanged(event:Event):void{ var targetEvent:MouseEvent; cleanupActiveMouse(); cursor = null; cursorChanged(event); targetEvent = (_tool.targetEvent as MouseEvent); if (targetEvent){ activeMouseMove(targetEvent); }; } protected function cleanupActiveMouse():void{ if (activeTarget){ activeTarget.removeEventListener(MouseEvent.MOUSE_MOVE, activeMouseMove, false); activeTarget = null; }; mouseActive = false; } protected function cleanupCursor():void{ if (((_cursor) && ((cursor.parent == this)))){ removeChild(_cursor); }; } protected function addedToStage(event:Event):void{ this.tool = (parent as TransformTool); } public function set offset(value:Point):void{ _offset = value; } protected function removedFromStage(event:Event):void{ this.tool = null; cleanupActiveMouse(); } protected function setupCursor():void{ var cursorEvent:MouseEvent; if (_cursor){ addChild(_cursor); setupActiveMouse(); cursorEvent = (_tool.cursorEvent as MouseEvent); if (cursorEvent){ activeMouseMove(cursorEvent); }; } else { cleanupActiveMouse(); }; } public function set tool(value:TransformTool):void{ if (value == _tool){ return; }; if (_tool){ _tool.removeEventListener(TransformTool.CURSOR_CHANGED, cursorChanged); _tool.removeEventListener(TransformTool.TARGET_CHANGED, targetChanged); }; _tool = value; if (_tool){ _tool.addEventListener(TransformTool.CURSOR_CHANGED, cursorChanged); _tool.addEventListener(TransformTool.TARGET_CHANGED, targetChanged); }; } protected function get cursor():DisplayObject{ return (_cursor); } protected function setupActiveMouse():void{ if (mouseActive){ return; }; activeTarget = null; if (((((stage) && (loaderInfo))) && (loaderInfo.parentAllowsChild))){ activeTarget = stage; } else { if (root){ activeTarget = root; }; }; if (activeTarget){ mouseActive = true; activeTarget.addEventListener(MouseEvent.MOUSE_MOVE, activeMouseMove, false, 1); }; } protected function cursorChanged(event:Event):void{ cursor = _tool.cursor; } public function get tool():TransformTool{ return (_tool); } public function get offset():Point{ return (_offset); } protected function set cursor(value:DisplayObject):void{ if (value == _cursor){ return; }; cleanupCursor(); _cursor = value; setupCursor(); } protected function activeMouseMove(event:MouseEvent):void{ var position:Point; if ((((event == _tool.targetEvent)) && (_tool.targetEventMouse))){ position = _tool.targetEventMouse; } else { position = new Point(event.stageX, event.stageY); }; position = _tool.globalToLocal(position); if (_offset){ position.x = (position.x + _offset.x); position.y = (position.y + _offset.y); }; x = position.x; y = position.y; event.updateAfterEvent(); } } }//package com.senocular.display.transform
Section 57
//ControlInteractive (com.senocular.display.transform.ControlInteractive) package com.senocular.display.transform { import flash.geom.*; import flash.events.*; public class ControlInteractive extends Control { public const MIN_SCALE_BASE:Number = 0.1; protected var localMouse:Point; protected var baseLocalRegistration:Point; protected var activeX:Number; protected var activeY:Number; protected var activeLocalX:Number; protected var baseRegistration:Point; protected var activeTarget:IEventDispatcher; protected var activeLocalY:Number; private var _cursor:Cursor; protected var baseLocalY:Number; protected var baseLocalMatrixInverted:Matrix; protected var baseLocalX:Number; protected var baseY:Number; protected var activeMouseEvent:MouseEvent; protected var baseX:Number; protected var mouse:Point; protected var offsetMouse:Point; public function ControlInteractive(cursor:Cursor=null){ offsetMouse = new Point(); super(); this.cursor = cursor; fillColor = 0; lineColor = 0xFFFFFF; lineThickness = 2; addEventListener(MouseEvent.MOUSE_DOWN, mouseDown); addEventListener(MouseEvent.MOUSE_UP, mouseUp); addEventListener(MouseEvent.ROLL_OVER, rollOver); addEventListener(MouseEvent.ROLL_OUT, rollOut); } override protected function removedFromStage(event:Event):void{ cleanupActiveMouse(); super.removedFromStage(event); } protected function rollOver(event:MouseEvent):void{ if (((!((_cursor == null))) && (!((tool == null))))){ if (!tool.isActive){ tool.setCursor(_cursor, event); }; }; } protected function cleanupCursor():void{ if (_cursor){ _cursor.tool = null; }; } protected function setupCursor():void{ if (_cursor){ _cursor.tool = tool; }; } protected function cleanupActiveMouse():void{ var tool:TransformTool; tool = this.tool; if (activeTarget){ activeTarget.removeEventListener(MouseEvent.ROLL_OUT, activeMouseUp); activeTarget.removeEventListener(MouseEvent.MOUSE_MOVE, activeMouseMove); activeTarget.removeEventListener(MouseEvent.MOUSE_UP, activeMouseUp, true); activeTarget.removeEventListener(MouseEvent.MOUSE_UP, activeMouseUp, false); activeTarget = null; tool.isActive = false; }; tool.removeEventListener(TransformTool.RESTRICT, restrict); if (tool.cursor == _cursor){ tool.setCursor(null); }; } protected function mouseUp(event:MouseEvent):void{ if (tool != null){ tool.setCursor(_cursor, event); }; } protected function scaleXAxis():void{ if (Math.abs(baseLocalX) >= MIN_SCALE_BASE){ tool.preTransform.scale((activeLocalX / baseLocalX), 1); }; } protected function activeMouseUp(event:MouseEvent):void{ if (event.eventPhase != EventPhase.BUBBLING_PHASE){ activeMouseEvent = null; cleanupActiveMouse(); tool.commitTarget(); }; } protected function moveRegistration():void{ tool.localRegistration.x = localMouse.x; tool.localRegistration.y = localMouse.y; tool.saveRegistration(); } protected function skewXAxis():void{ if (Math.abs(baseLocalY) >= MIN_SCALE_BASE){ tool.preTransform.c = ((activeLocalX - baseLocalX) / baseLocalY); }; } protected function updateBaseReferences():void{ var tool:TransformTool; var baseLocalMatrix:Matrix; tool = this.tool; if (tool.normalizeBase()){ calculateAndUpdate(); } else { if (activeMouseEvent != tool.targetEvent){ tool.update(); }; }; baseLocalMatrix = tool.baseMatrix; baseLocalMatrixInverted = baseLocalMatrix.clone(); baseLocalMatrixInverted.invert(); baseLocalRegistration = tool.localRegistration; baseRegistration = baseLocalMatrix.transformPoint(baseLocalRegistration); updateBaseMouse(); } protected function rotate():void{ var baseAngle:Number; var activeAngle:Number; baseAngle = Math.atan2(baseY, baseX); activeAngle = Math.atan2(activeY, activeX); tool.postTransform.rotate((activeAngle - baseAngle)); } protected function setupActiveMouse():void{ activeTarget = null; if (((((stage) && (loaderInfo))) && (loaderInfo.parentAllowsChild))){ activeTarget = stage; } else { if (root){ activeTarget = root; activeTarget.addEventListener(MouseEvent.ROLL_OUT, activeMouseUp); }; }; if (activeTarget){ tool.isActive = true; activeTarget.addEventListener(MouseEvent.MOUSE_MOVE, activeMouseMove); activeTarget.addEventListener(MouseEvent.MOUSE_UP, activeMouseUp, true); activeTarget.addEventListener(MouseEvent.MOUSE_UP, activeMouseUp, false); }; tool.addEventListener(TransformTool.RESTRICT, restrict); } public function get cursor():Cursor{ return (_cursor); } protected function rollOut(event:MouseEvent):void{ if (((!((_cursor == null))) && (!((tool == null))))){ if (((!(tool.isActive)) && ((activeTarget == null)))){ tool.setCursor(null); }; }; } protected function scaleYAxis():void{ if (Math.abs(baseLocalY) >= MIN_SCALE_BASE){ tool.preTransform.scale(1, (activeLocalY / baseLocalY)); }; } protected function updateBaseMouse():void{ var localOffset:Point; updateMousePositions(activeMouseEvent); baseX = ((mouse.x + offsetMouse.x) - baseRegistration.x); baseY = ((mouse.y + offsetMouse.y) - baseRegistration.y); localOffset = baseLocalMatrixInverted.deltaTransformPoint(offsetMouse); baseLocalX = ((localMouse.x + localOffset.x) - baseLocalRegistration.x); baseLocalY = ((localMouse.y + localOffset.y) - baseLocalRegistration.y); } protected function scale():void{ var sx:Number; var sy:Number; sx = ((Math.abs(baseLocalX))>=MIN_SCALE_BASE) ? (activeLocalX / baseLocalX) : 1; sy = ((Math.abs(baseLocalY))>=MIN_SCALE_BASE) ? (activeLocalY / baseLocalY) : 1; if (((!((sx == 1))) || (!((sy == 1))))){ tool.preTransform.scale(sx, sy); }; } protected function activeMouseMove(event:MouseEvent):void{ activeMouseEvent = event; updateActiveMouse(); } override protected function setupTool():void{ setupCursor(); super.setupTool(); } protected function calculateAndUpdate(commit:Boolean=true, enforceNegativeScaling:Boolean=true):void{ tool.calculateTransform(true, enforceNegativeScaling); tool.update(commit); } public function set cursor(value:Cursor):void{ if (value == _cursor){ return; }; setupCursor(); _cursor = value; cleanupCursor(); } protected function updateMousePositions(event:MouseEvent=null):void{ var tool:TransformTool; tool = this.tool; if ((((event == tool.targetEvent)) && (tool.targetEventMouse))){ mouse = tool.targetEventMouse.clone(); } else { mouse = new Point(event.stageX, event.stageY); }; if (tool.target.parent != null){ mouse = tool.target.parent.globalToLocal(mouse); }; localMouse = baseLocalMatrixInverted.transformPoint(mouse); } protected function restrict(event:Event):void{ } protected function updateActiveMouse():void{ var localOffset:Point; updateMousePositions(activeMouseEvent); activeX = ((mouse.x + offsetMouse.x) - baseRegistration.x); activeY = ((mouse.y + offsetMouse.y) - baseRegistration.y); localOffset = baseLocalMatrixInverted.deltaTransformPoint(offsetMouse); activeLocalX = ((localMouse.x + localOffset.x) - baseLocalRegistration.x); activeLocalY = ((localMouse.y + localOffset.y) - baseLocalRegistration.y); } protected function skewYAxis():void{ if (Math.abs(baseLocalX) >= MIN_SCALE_BASE){ tool.preTransform.b = ((activeLocalY - baseLocalY) / baseLocalX); }; } protected function move():void{ tool.postTransform.translate((activeX - baseX), (activeY - baseY)); } override protected function targetChanged(event:Event):void{ cleanupActiveMouse(); } protected function mouseDown(event:MouseEvent):void{ activeMouseEvent = event; updateBaseReferences(); setupActiveMouse(); } override public function redraw(event:Event):void{ if (_cursor != null){ _cursor.redraw(event); }; } protected function uniformScale():void{ var sx:Number; var sy:Number; var ratioX:Number; var ratioY:Number; sx = ((Math.abs(baseLocalX))>=MIN_SCALE_BASE) ? (activeLocalX / baseLocalX) : 1; sy = ((Math.abs(baseLocalY))>=MIN_SCALE_BASE) ? (activeLocalY / baseLocalY) : 1; if (((!((sx == 1))) || (!((sy == 1))))){ ratioX = (sy) ? Math.abs((sx / sy)) : 0; ratioY = (sx) ? Math.abs((sy / sx)) : 0; if ((((ratioX == 0)) || ((ratioY == 0)))){ sx = 0; sy = 0; } else { if (ratioX > ratioY){ sx = (sx * ratioY); } else { sy = (sy * ratioX); }; }; tool.preTransform.scale(sx, sy); }; } } }//package com.senocular.display.transform
Section 58
//ControlMove (com.senocular.display.transform.ControlMove) package com.senocular.display.transform { import flash.display.*; import flash.events.*; public class ControlMove extends ControlInteractive { private var _target:DisplayObject; public function ControlMove(cursor:Cursor=null){ super(cursor); } public function set target(value:DisplayObject):void{ var targetEvent:MouseEvent; if (value == _target){ return; }; if (_target){ _target.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDown); _target.removeEventListener(MouseEvent.MOUSE_UP, mouseUp); _target.removeEventListener(MouseEvent.ROLL_OVER, rollOver); _target.removeEventListener(MouseEvent.ROLL_OUT, rollOut); }; _target = value; if (_target){ _target.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown); _target.addEventListener(MouseEvent.MOUSE_UP, mouseUp); _target.addEventListener(MouseEvent.ROLL_OVER, rollOver); _target.addEventListener(MouseEvent.ROLL_OUT, rollOut); targetEvent = (tool.targetEvent as MouseEvent); if (((targetEvent) && ((targetEvent.type == MouseEvent.MOUSE_DOWN)))){ rollOver(targetEvent); mouseDown(targetEvent); }; }; } override public function set tool(value:TransformTool):void{ var tool:TransformTool; super.tool = value; tool = super.tool; if (tool){ this.target = tool.target; } else { this.target = null; }; } public function get target():DisplayObject{ return (_target); } override protected function activeMouseMove(event:MouseEvent):void{ super.activeMouseMove(event); move(); calculateAndUpdate(false); } override protected function targetChanged(event:Event):void{ super.targetChanged(event); this.target = tool.target; } } }//package com.senocular.display.transform
Section 59
//ControlUV (com.senocular.display.transform.ControlUV) package com.senocular.display.transform { import flash.display.*; import flash.geom.*; import flash.events.*; public class ControlUV extends ControlInteractive { private var _offset:Point; private var _u:Number; private var _v:Number; public function ControlUV(u:Number=0, v:Number=0, cursor:Cursor=null){ super(cursor); this.u = u; this.v = v; } override public function redraw(event:Event):void{ super.redraw(event); setPosition(); } public function getLocalUVPosition(u:Number, v:Number, target:DisplayObject):Point{ var bounds:Rectangle; if (target == null){ return (new Point(0, 0)); }; bounds = target.getBounds(target); return (new Point((bounds.left + (bounds.width * u)), (bounds.top + (bounds.height * v)))); } public function get v():Number{ return (_v); } public function get u():Number{ return (_u); } public function get offset():Point{ return (_offset); } public function getUVPosition(u:Number=NaN, v:Number=NaN, offset:Point=null):Point{ var tool:TransformTool; var position:Point; var angle:Number; tool = this.tool; if ((((tool == null)) || ((tool.target == null)))){ return (new Point(0, 0)); }; if (isNaN(u)){ u = _u; }; if (isNaN(v)){ v = _v; }; if (offset == null){ offset = _offset; }; position = getLocalUVPosition(u, v, tool.target); position = tool.calculatedMatrix.transformPoint(position); if (offset){ if (!isNaN(offset.x)){ angle = tool.getRotationX(); position.x = (position.x + (offset.x * Math.cos(angle))); position.y = (position.y + (offset.x * Math.sin(angle))); }; if (!isNaN(offset.y)){ angle = tool.getRotationY(); position.x = (position.x + (offset.y * Math.sin(angle))); position.y = (position.y + (offset.y * Math.cos(angle))); }; }; return (position); } public function set u(value:Number):void{ _u = (isNaN(value)) ? 0 : value; } public function set v(value:Number):void{ _v = (isNaN(value)) ? 0 : value; } public function set offset(value:Point):void{ _offset = value; } protected function setPosition():void{ var position:Point; position = getUVPosition(); x = position.x; y = position.y; } } }//package com.senocular.display.transform
Section 60
//ControlUVRotate (com.senocular.display.transform.ControlUVRotate) package com.senocular.display.transform { import flash.events.*; public class ControlUVRotate extends ControlUV { public function ControlUVRotate(u:Number=1, v:Number=1, cursor:Cursor=null){ super(u, v, cursor); addEventListener(MouseEvent.MOUSE_DOWN, mouseDown); } override public function draw():void{ super.draw(); graphics.clear(); if (numChildren){ return; }; var _local2 = graphics; with (_local2) { beginFill(this.fillColor, this.fillAlpha); lineStyle(this.lineThickness, this.lineColor, this.lineAlpha); drawCircle(0, 0, 4); }; } override protected function activeMouseMove(event:MouseEvent):void{ super.activeMouseMove(event); rotate(); calculateAndUpdate(false); } override protected function restrict(event:Event):void{ var snap:Number; event.preventDefault(); if (activeMouseEvent.shiftKey){ snap = (Math.PI / 4); tool.setRotation((Math.round((tool.getRotation() / snap)) * snap)); }; tool.restrictRotation(); } } }//package com.senocular.display.transform
Section 61
//ControlUVScale (com.senocular.display.transform.ControlUVScale) package com.senocular.display.transform { import flash.events.*; public class ControlUVScale extends ControlUV { private var _mode:String; public static const BOTH:String = "both"; public static const UNIFORM:String = "uniform"; public static const Y_AXIS:String = "yAxis"; public static const X_AXIS:String = "xAxis"; public function ControlUVScale(u:Number=1, v:Number=1, mode:String="both", cursor:Cursor=null){ super(u, v, cursor); this.mode = mode; } override protected function mouseDown(event:MouseEvent):void{ offsetMouse.x = -(event.localX); offsetMouse.y = -(event.localY); super.mouseDown(event); } override public function draw():void{ super.draw(); graphics.clear(); if (numChildren){ return; }; var _local2 = graphics; with (_local2) { beginFill(this.fillColor, this.fillAlpha); lineStyle(this.lineThickness, this.lineColor, this.lineAlpha); drawRect(-4, -4, 8, 8); }; } public function set mode(value:String):void{ _mode = value; } public function get mode():String{ return (_mode); } override protected function activeMouseMove(event:MouseEvent):void{ super.activeMouseMove(event); switch (_mode){ case X_AXIS: scaleXAxis(); break; case Y_AXIS: scaleYAxis(); break; case UNIFORM: uniformScale(); break; case BOTH: default: if (event.shiftKey){ uniformScale(); } else { scale(); }; break; }; calculateAndUpdate(false); } } }//package com.senocular.display.transform
Section 62
//Cursor (com.senocular.display.transform.Cursor) package com.senocular.display.transform { import flash.display.*; import flash.events.*; public class Cursor extends Sprite { private var _fillAlpha:Number;// = 1 private var _fillColor:uint;// = 0 private var _lineColor:uint;// = 0xFFFFFF private var _lineAlpha:Number;// = 1 private var _tool:TransformTool; private var _lineThickness:Number;// = 0 public function Cursor(){ _fillColor = 0; _lineColor = 0xFFFFFF; _fillAlpha = 1; _lineAlpha = 1; _lineThickness = 0; super(); draw(); addEventListener(Event.ADDED, added, true); } protected function added(event:Event):void{ draw(); } public function set fillAlpha(value:Number):void{ _fillAlpha = value; } public function set tool(value:TransformTool):void{ if (value == _tool){ return; }; _tool = value; } public function draw():void{ } public function set fillColor(value:uint):void{ _fillColor = value; } public function get tool():TransformTool{ return (_tool); } public function get fillColor():uint{ return (_fillColor); } public function set lineAlpha(value:Number):void{ _lineAlpha = value; } public function set lineColor(value:uint):void{ _lineColor = value; } public function get fillAlpha():Number{ return (_fillAlpha); } public function set lineThickness(value:Number):void{ _lineThickness = value; } public function get lineAlpha():Number{ return (_lineAlpha); } public function get lineColor():uint{ return (_lineColor); } public function get lineThickness():Number{ return (_lineThickness); } public function redraw(event:Event):void{ } } }//package com.senocular.display.transform
Section 63
//CursorMove (com.senocular.display.transform.CursorMove) package com.senocular.display.transform { public class CursorMove extends Cursor { public function CursorMove(){ super(); } override public function draw():void{ super.draw(); graphics.clear(); if (numChildren){ return; }; var _local2 = graphics; with (_local2) { beginFill(this.fillColor, this.fillAlpha); lineStyle(this.lineThickness, this.lineColor, this.lineAlpha); moveTo(1, 1); lineTo(1, -2); lineTo(-1, -2); lineTo(2, -6); lineTo(5, -2); lineTo(3, -2); lineTo(3, 1); lineTo(6, 1); lineTo(6, -1); lineTo(10, 2); lineTo(6, 5); lineTo(6, 3); lineTo(3, 3); lineTo(3, 5); lineTo(3, 6); lineTo(5, 6); lineTo(2, 10); lineTo(-1, 6); lineTo(1, 6); lineTo(1, 5); lineTo(1, 3); lineTo(-2, 3); lineTo(-2, 5); lineTo(-6, 2); lineTo(-2, -1); lineTo(-2, 1); lineTo(1, 1); endFill(); }; } } }//package com.senocular.display.transform
Section 64
//CursorRotate (com.senocular.display.transform.CursorRotate) package com.senocular.display.transform { public class CursorRotate extends Cursor { public function CursorRotate(){ super(); } override public function draw():void{ var angle1:Number; var angle2:Number; super.draw(); graphics.clear(); if (numChildren){ return; }; angle1 = Math.PI; angle2 = (-(Math.PI) / 2); var _local2 = graphics; with (_local2) { beginFill(this.fillColor, this.fillAlpha); lineStyle(this.lineThickness, this.lineColor, this.lineAlpha); this.drawArc(0, 0, 4, angle1, angle2, true); this.drawArc(0, 0, 6, angle2, angle1, false); lineTo(-8, 0); lineTo(-5, 4); lineTo(-2, 0); lineTo(-4, 0); endFill(); }; } protected function drawArc(originX:Number, originY:Number, radius:Number, angle1:Number, angle2:Number, useMove:Boolean=true):void{ var diff:Number; var divs:int; var span:Number; var cosSpan:Number; var radiusc:Number; var i:int; diff = (angle2 - angle1); divs = (1 + Math.floor((Math.abs(diff) / (Math.PI / 4)))); span = (diff / (2 * divs)); cosSpan = Math.cos(span); radiusc = (cosSpan) ? (radius / cosSpan) : 0; if (useMove){ graphics.moveTo((originX + (Math.cos(angle1) * radius)), (originY - (Math.sin(angle1) * radius))); } else { graphics.lineTo((originX + (Math.cos(angle1) * radius)), (originY - (Math.sin(angle1) * radius))); }; i = 0; while (i < divs) { angle2 = (angle1 + span); angle1 = (angle2 + span); graphics.curveTo((originX + (Math.cos(angle2) * radiusc)), (originY - (Math.sin(angle2) * radiusc)), (originX + (Math.cos(angle1) * radius)), (originY - (Math.sin(angle1) * radius))); i++; }; } } }//package com.senocular.display.transform
Section 65
//CursorScale (com.senocular.display.transform.CursorScale) package com.senocular.display.transform { import flash.events.*; public class CursorScale extends Cursor { private var _mode:String; private var _rotationOffset:Number; public function CursorScale(mode:String="both", rotationOffset:Number=0){ super(); this.mode = mode; if (isNaN(rotationOffset)){ rotationOffset = 0; }; this.rotationOffset = rotationOffset; } override public function draw():void{ super.draw(); graphics.clear(); if (numChildren){ return; }; var _local2 = graphics; with (_local2) { beginFill(this.fillColor, this.fillAlpha); lineStyle(this.lineThickness, this.lineColor, this.lineAlpha); moveTo(4.5, -0.5); lineTo(4.5, -2.5); lineTo(8.5, 0.5); lineTo(4.5, 3.5); lineTo(4.5, 1.5); lineTo(-0.5, 1.5); lineTo(-3.5, 1.5); lineTo(-3.5, 3.5); lineTo(-7.5, 0.5); lineTo(-3.5, -2.5); lineTo(-3.5, -0.5); lineTo(4.5, -0.5); endFill(); }; } public function set rotationOffset(value:Number):void{ _rotationOffset = value; } public function set mode(value:String):void{ _mode = value; } public function get rotationOffset():Number{ return (_rotationOffset); } public function get mode():String{ return (_mode); } override public function redraw(event:Event):void{ var tool:TransformTool; var TO_DEGREES:Number; var angleX:Number; var angleY:Number; super.redraw(event); tool = this.tool; if (tool == null){ return; }; TO_DEGREES = (180 / Math.PI); angleX = (Math.atan2((tool.topRight.y - tool.topLeft.y), (tool.topRight.x - tool.topLeft.x)) * TO_DEGREES); angleY = (Math.atan2((tool.bottomLeft.y - tool.topLeft.y), (tool.bottomLeft.x - tool.topLeft.x)) * TO_DEGREES); switch (mode){ case ControlUVScale.X_AXIS: rotation = (rotationOffset + angleX); break; case ControlUVScale.Y_AXIS: rotation = (rotationOffset + angleY); break; case ControlUVScale.BOTH: case ControlUVScale.UNIFORM: default: rotation = (rotationOffset + ((angleX + angleY) / 2)); break; }; } } }//package com.senocular.display.transform
Section 66
//RegistrationManager (com.senocular.display.transform.RegistrationManager) package com.senocular.display.transform { import flash.display.*; import flash.utils.*; import flash.geom.*; public class RegistrationManager { private var _defaultUV:Point; private var _defaultXY:Point; private var _enabled:Boolean;// = true protected var map:Dictionary; public function RegistrationManager(){ _enabled = true; super(); map = new Dictionary(true); } public function get enabled():Boolean{ return (_enabled); } public function set enabled(value:Boolean):void{ _enabled = value; if (_enabled == false){ clear(); }; } public function get defaultXY():Point{ return (_defaultXY); } public function set defaultUV(value:Point):void{ _defaultUV = (value) ? value.clone() : null; } public function set defaultXY(value:Point):void{ _defaultXY = (value) ? value.clone() : null; } public function clear(target:DisplayObject=null):void{ var key:Object; if (target){ delete map[target]; } else { for (key in map) { delete map[target]; }; }; } public function getRegistration(target:DisplayObject):Point{ var result:Point; var bounds:Rectangle; if (target == null){ return (null); }; result = (map[target] as Point); if (result){ return (result); }; if (_defaultUV){ bounds = target.getBounds(target); return (new Point((bounds.x + (bounds.width * _defaultUV.x)), (bounds.y + (bounds.height * _defaultUV.y)))); }; if (_defaultXY){ return (_defaultXY.clone()); }; return (null); } public function get defaultUV():Point{ return (_defaultUV); } public function setRegistration(target:DisplayObject, point:Point):void{ if (((((_enabled) && (target))) && (point))){ map[target] = point.clone(); }; } public function contains(target:DisplayObject):Boolean{ return ((target in map)); } } }//package com.senocular.display.transform
Section 67
//TransformTool (com.senocular.display.transform.TransformTool) package com.senocular.display.transform { import flash.display.*; import flash.geom.*; import flash.events.*; import flash.ui.*; public class TransformTool extends Sprite { private var _cursorHidesMouse:Boolean;// = false private var _maxWidth:Number; private var _maxHeight:Number; private var _minRotation:Number; private var _isActive:Boolean;// = false private var _cursor:DisplayObject; private var _minHeight:Number; private var _target:DisplayObject; public var bottomRight:Point; public var registration:Point; protected var _postTransform:Matrix; public var bottomLeft:Point; public var topLeft:Point; protected var _targetEventMouse:Point; protected var _cursorEvent:Event; private var _transformMethod:String;// = "matrix" private var _maxRotation:Number; private var _localRegistration:Point; private var _maxScaleX:Number; private var _negativeScaling:Boolean;// = true private var _maxScaleY:Number; private var _livePreview:Boolean;// = true protected var _calculatedMatrix:Matrix; protected var _baseMatrix:Matrix; private var _minScaleX:Number; private var _minScaleY:Number; public var topRight:Point; protected var _targetEvent:Event; protected var _preTransform:Matrix; private var _minWidth:Number; private var _registrationManager:RegistrationManager; private var _autoRaise:Boolean;// = false public static const TRANSFORM_CHANGED:String = "transformChanged"; public static const TARGET_CHANGED:String = "targetChanged"; public static const CURSOR_CHANGED:String = "cursorChanged"; public static const TRANSFORM_PROPERTIES:String = "properties"; public static const TRANSFORM_MATRIX:String = "matrix"; public static const REDRAW:String = "redraw"; public static const RESTRICT:String = "restrict"; public static const TARGET_TRANSFORMED:String = "targetTransformed"; public static const COMMIT:String = "commit"; public function TransformTool(controls:Array=null, registrationManager:RegistrationManager=null){ _cursorHidesMouse = false; _localRegistration = new Point(0, 0); _negativeScaling = true; registration = new Point(); topLeft = new Point(); topRight = new Point(); bottomLeft = new Point(); bottomRight = new Point(); _baseMatrix = new Matrix(); _preTransform = new Matrix(); _postTransform = new Matrix(); _calculatedMatrix = new Matrix(); _transformMethod = TRANSFORM_MATRIX; _livePreview = true; _autoRaise = false; _isActive = false; super(); visible = false; if (controls != null){ this.controls = controls; }; if (registrationManager != null){ this.registrationManager = registrationManager; } else { this.registrationManager = new RegistrationManager(); }; } public function setRotation(value:Number, matrix:Matrix=null):void{ var tx:Number; var ty:Number; var angle:Number; if (isNaN(value)){ return; }; if (matrix == null){ matrix = _calculatedMatrix; }; tx = matrix.tx; ty = matrix.ty; angle = Math.atan2(matrix.b, matrix.a); matrix.rotate((value - angle)); matrix.tx = tx; matrix.ty = ty; } public function set maxRotation(value:Number):void{ _maxRotation = value; } public function raise():void{ var container:DisplayObjectContainer; if (_target){ container = _target.parent; if (container){ container.setChildIndex(_target, (container.numChildren - 1)); }; }; container = this.parent; if (container){ container.setChildIndex(this, (container.numChildren - 1)); }; } public function get preTransform():Matrix{ return (_preTransform); } public function getWidth():Number{ var bounds:Rectangle; if (_target == null){ return (0); }; bounds = _target.getBounds(_target); return ((bounds.width * getScaleX(_calculatedMatrix))); } public function get minHeight():Number{ return (_minHeight); } public function getHeight():Number{ var bounds:Rectangle; if (_target == null){ return (0); }; bounds = _target.getBounds(_target); return ((bounds.height * getScaleY(_calculatedMatrix))); } protected function resetTransformModifiers(resetBase:Boolean=true):void{ var baseRotation:Number; _preTransform.identity(); _postTransform.identity(); if (resetBase){ _baseMatrix.identity(); if (validateTargetMatrix()){ _baseMatrix.concat(_target.transform.matrix); if (((!(_negativeScaling)) && (!(isPositiveScale(_baseMatrix))))){ baseRotation = Math.atan2((_baseMatrix.a + _baseMatrix.c), (_baseMatrix.d + _baseMatrix.b)); if ((((baseRotation < -(((3 * Math.PI) / 4)))) || ((baseRotation > (Math.PI / 4))))){ _calculatedMatrix.c = -(_calculatedMatrix.c); _calculatedMatrix.d = -(_calculatedMatrix.d); } else { _calculatedMatrix.a = -(_calculatedMatrix.a); _calculatedMatrix.b = -(_calculatedMatrix.b); }; }; }; }; } public function setHeight(value:Number):void{ var bounds:Rectangle; var ratio:Number; if ((((_target == null)) || (isNaN(value)))){ return; }; bounds = _target.getBounds(_target); ratio = (Math.abs(value) / bounds.height); ratio = (ratio / getScaleY(_calculatedMatrix)); calculatedMatrix.c = (calculatedMatrix.c * ratio); calculatedMatrix.d = (calculatedMatrix.d * ratio); } public function set minHeight(value:Number):void{ _minHeight = value; } protected function setupCursor():void{ if (_cursorHidesMouse){ if (_cursor == null){ Mouse.show(); } else { Mouse.hide(); }; }; dispatchEvent(new Event(CURSOR_CHANGED)); } public function setCursor(value:DisplayObject, cursorEvent:Event=null):void{ _cursorEvent = (value) ? cursorEvent : null; if (value == _cursor){ return; }; cleanupCursor(); _cursor = value; setupCursor(); } public function restrictRotation():void{ var min:Number; var max:Number; var angle:Number; if (((!(isNaN(_minRotation))) && (!(isNaN(_maxRotation))))){ min = (_minRotation * (Math.PI / 180)); max = (_maxRotation * (Math.PI / 180)); angle = Math.atan2(_calculatedMatrix.b, _calculatedMatrix.a); if (min == max){ if (angle != min){ setRotation(min); }; } else { if (min < max){ if (angle < min){ setRotation(min); } else { if (angle > max){ setRotation(max); }; }; } else { if ((((angle < min)) && ((angle > max)))){ if (Math.abs((angle - min)) > Math.abs((angle - max))){ setRotation(max); } else { setRotation(min); }; }; }; }; }; } protected function setupTarget():void{ retrieveRegistration(); if (_target){ visible = true; if (_autoRaise){ raise(); }; fitToTarget(); } else { visible = false; }; dispatchEvent(new Event(TARGET_CHANGED)); } public function set livePreview(value:Boolean):void{ _livePreview = value; } public function set minScaleX(value:Number):void{ _minScaleX = value; } public function set minScaleY(value:Number):void{ _minScaleY = value; } public function setWidth(value:Number):void{ var bounds:Rectangle; var ratio:Number; if ((((_target == null)) || (isNaN(value)))){ return; }; bounds = _target.getBounds(_target); ratio = (Math.abs(value) / bounds.width); ratio = (ratio / getScaleX(_calculatedMatrix)); calculatedMatrix.a = (calculatedMatrix.a * ratio); calculatedMatrix.b = (calculatedMatrix.b * ratio); } public function setTarget(value:DisplayObject, targetEvent:Event=null):void{ var targetMouseEvent:MouseEvent; _targetEvent = (value) ? targetEvent : null; targetMouseEvent = (_targetEvent as MouseEvent); if (targetMouseEvent){ _targetEventMouse = new Point(targetMouseEvent.stageX, targetMouseEvent.stageY); } else { _targetEventMouse = null; }; if (value == _target){ return; }; cleanupTarget(); _target = value; setupTarget(); } public function get minWidth():Number{ return (_minWidth); } public function updateControls():void{ dispatchEvent(new Event(REDRAW)); } public function get targetEventMouse():Point{ return (_targetEventMouse); } public function set cursor(value:DisplayObject):void{ setCursor(value, null); } public function get postTransform():Matrix{ return (_postTransform); } public function calculateTransform(reset:Boolean=true, enforceNegativeScaling:Boolean=true):void{ var originalMatrix:Matrix; var tx:Number; var ty:Number; originalMatrix = _calculatedMatrix.clone(); _calculatedMatrix.identity(); _calculatedMatrix.concat(_preTransform); _calculatedMatrix.concat(_baseMatrix); tx = (_calculatedMatrix.tx + _postTransform.tx); ty = (_calculatedMatrix.ty + _postTransform.ty); _calculatedMatrix.concat(_postTransform); _calculatedMatrix.tx = tx; _calculatedMatrix.ty = ty; restrict(enforceNegativeScaling); applyRegistrationOffset(); if (reset){ resetTransformModifiers(false); }; if (!matrixEquals(originalMatrix, _calculatedMatrix)){ dispatchEvent(new Event(TRANSFORM_CHANGED)); }; } protected function applyRegistrationOffset():void{ var reg:Point; var regOffset:Point; retrieveRegistration(); if (((!((_localRegistration.x == 0))) || (!((_localRegistration.y == 0))))){ reg = _baseMatrix.deltaTransformPoint(_localRegistration); regOffset = _calculatedMatrix.deltaTransformPoint(_localRegistration); regOffset = reg.subtract(regOffset); _calculatedMatrix.translate(regOffset.x, regOffset.y); }; } public function get registrationManager():RegistrationManager{ return (_registrationManager); } public function get controls():Array{ var value:Array; var i:int; value = []; i = numChildren; while (i--) { value[i] = getChildAt(i); }; return (value); } public function get maxWidth():Number{ return (_maxWidth); } protected function restrict(enforceNegativeScaling:Boolean=true):void{ var restrictEvent:Event; restrictEvent = new Event(RESTRICT, false, true); dispatchEvent(restrictEvent); if (restrictEvent.isDefaultPrevented()){ return; }; restrictScale(enforceNegativeScaling); restrictRotation(); } public function deselect(event:Event):void{ if (((!((_target == null))) && ((event.eventPhase == EventPhase.AT_TARGET)))){ setTarget(null, null); }; } public function update(commit:Boolean=true):void{ updateMetrics(); if (commit){ commitTarget(); } else { updateTarget(); }; updateControls(); } public function get isActive():Boolean{ return (_isActive); } public function get maxScaleX():Number{ return (_maxScaleX); } public function get maxScaleY():Number{ return (_maxScaleY); } public function saveRegistration():void{ _registrationManager.setRegistration(_target, _localRegistration); } public function set transformMethod(value:String):void{ _transformMethod = value; } public function resetTransform():void{ resetTransformModifiers(false); normalizeBase(); _postTransform.identity(); _postTransform.concat(_baseMatrix); _postTransform.invert(); _postTransform.tx = 0; _postTransform.ty = 0; calculateTransform(true, false); } public function matrixEquals(m1:Matrix, m2:Matrix=null):Boolean{ if (m2 == null){ m2 = _calculatedMatrix; }; if (((((((((((!((m1.a == m2.a))) || (!((m1.d == m2.d))))) || (!((m1.b == m2.b))))) || (!((m1.c == m2.c))))) || (!((m1.tx == m2.tx))))) || (!((m1.ty == m2.ty))))){ return (false); }; return (true); } protected function validateTargetMatrix():Boolean{ if (_target == null){ return (false); }; if (_target.transform.matrix == null){ _target.transform.matrix = new Matrix(1, 0, 0, 1, _target.x, _target.y); }; return (true); } public function get cursorEvent():Event{ return (_cursorEvent); } public function set autoRaise(value:Boolean):void{ _autoRaise = value; } public function get maxRotation():Number{ return (_maxRotation); } protected function retrieveRegistration():void{ var saved:Point; saved = _registrationManager.getRegistration(_target); if (saved != null){ _localRegistration.x = saved.x; _localRegistration.y = saved.y; } else { _localRegistration.x = 0; _localRegistration.y = 0; }; } protected function cleanupCursor():void{ } public function select(event:Event):void{ if (((!((event.currentTarget == this))) && ((event.currentTarget.parent == parent)))){ setTarget((event.currentTarget as DisplayObject), event); } else { if (((!((event.target == this))) && ((event.target.parent == parent)))){ setTarget((event.target as DisplayObject), event); }; }; } public function set target(value:DisplayObject):void{ setTarget(value, null); } public function get calculatedMatrix():Matrix{ return (_calculatedMatrix); } public function set negativeScaling(value:Boolean):void{ _negativeScaling = value; } public function fitToTarget():void{ if (_target == null){ return; }; resetTransformModifiers(); calculateTransform(false); update(); } public function getRotation():Number{ return (getRotationX(null)); } public function set minWidth(value:Number):void{ _minWidth = value; } public function get livePreview():Boolean{ return (_livePreview); } public function get minScaleY():Number{ return (_minScaleY); } public function getScaleX(matrix:Matrix=null):Number{ if (matrix == null){ matrix = _calculatedMatrix; }; return (Math.sqrt(((_calculatedMatrix.a * _calculatedMatrix.a) + (_calculatedMatrix.b * _calculatedMatrix.b)))); } public function get minScaleX():Number{ return (_minScaleX); } public function getScaleY(matrix:Matrix=null):Number{ if (matrix == null){ matrix = _calculatedMatrix; }; return (Math.sqrt(((_calculatedMatrix.c * _calculatedMatrix.c) + (_calculatedMatrix.d * _calculatedMatrix.d)))); } public function setScaleX(value:Number, matrix:Matrix=null):void{ var angle:Number; if (isNaN(value)){ return; }; if (matrix == null){ matrix = _calculatedMatrix; }; angle = Math.atan2(matrix.b, matrix.a); matrix.a = (value * Math.cos(angle)); matrix.b = (value * Math.sin(angle)); } public function set cursorHidesMouse(value:Boolean):void{ _cursorHidesMouse = value; } protected function cleanupTarget():void{ if (_target){ saveRegistration(); }; } public function get cursor():DisplayObject{ return (_cursor); } public function setScaleY(value:Number, matrix:Matrix=null):void{ var angle:Number; if (isNaN(value)){ return; }; if (matrix == null){ matrix = _calculatedMatrix; }; angle = Math.atan2(matrix.c, matrix.d); matrix.c = (value * Math.sin(angle)); matrix.d = (value * Math.cos(angle)); } public function set maxHeight(value:Number):void{ _maxHeight = value; } public function get transformMethod():String{ return (_transformMethod); } public function set registrationManager(value:RegistrationManager):void{ if (value){ if (value != _registrationManager){ _registrationManager = value; retrieveRegistration(); }; } else { throw (new ArgumentError("Parameter registrationManager cannot be null")); }; } public function set controls(value:Array):void{ var child:DisplayObject; var childrenOffset:int; var i:int; var n:int; var end:int; childrenOffset = 0; n = (value) ? value.length : 0; i = 0; while (i < n) { child = (value[i] as DisplayObject); if (child){ if (child.parent == this){ setChildIndex(child, (i - childrenOffset)); } else { addChildAt(child, (i - childrenOffset)); }; } else { childrenOffset++; }; i++; }; end = (n - childrenOffset); while (numChildren > end) { removeChildAt(end); }; } public function set maxWidth(value:Number):void{ _maxWidth = value; } public function get targetEvent():Event{ return (_targetEvent); } public function get target():DisplayObject{ return (_target); } public function get negativeScaling():Boolean{ return (_negativeScaling); } public function get autoRaise():Boolean{ return (_autoRaise); } public function normalizeBase(amount:Number=1):Boolean{ var changed:Boolean; var bounds:Rectangle; if (_target == null){ return (false); }; changed = false; bounds = _target.getBounds(_target); if (((!((bounds.width == 0))) && (!((bounds.height == 0))))){ if ((((_baseMatrix.a == 0)) && ((_baseMatrix.b == 0)))){ _baseMatrix.a = (amount / bounds.width); changed = true; }; if ((((_baseMatrix.d == 0)) && ((_baseMatrix.c == 0)))){ _baseMatrix.d = (amount / bounds.height); changed = true; }; }; return (changed); } public function set isActive(value:Boolean):void{ _isActive = value; } public function set maxScaleX(value:Number):void{ _maxScaleX = value; } public function set maxScaleY(value:Number):void{ _maxScaleY = value; } public function resetRegistration():void{ _localRegistration.x = 0; _localRegistration.y = 0; saveRegistration(); registration = _calculatedMatrix.transformPoint(_localRegistration); } public function get cursorHidesMouse():Boolean{ return (_cursorHidesMouse); } public function commitTarget():void{ var transformed:Boolean; if (!_isActive){ transformed = applyTransformToTarget(); resetTransformModifiers(); if (transformed){ dispatchEvent(new Event(TARGET_TRANSFORMED)); }; dispatchEvent(new Event(COMMIT)); }; } protected function applyTransformToTarget():Boolean{ var bounds:Rectangle; var ratioX:Number; var ratioY:Number; var angle:Number; if (((!(validateTargetMatrix())) || (matrixEquals(_target.transform.matrix, _calculatedMatrix)))){ return (false); }; switch (_transformMethod){ case TRANSFORM_MATRIX: _target.transform.matrix = _calculatedMatrix; break; case TRANSFORM_PROPERTIES: bounds = _target.getBounds(_target); if ((((bounds.width == 0)) || ((bounds.height == 0)))){ return (false); }; _target.rotation = 0; ratioX = Math.sqrt(((_calculatedMatrix.a * _calculatedMatrix.a) + (_calculatedMatrix.b * _calculatedMatrix.b))); ratioY = Math.sqrt(((_calculatedMatrix.c * _calculatedMatrix.c) + (_calculatedMatrix.d * _calculatedMatrix.d))); angle = Math.atan2(_calculatedMatrix.b, _calculatedMatrix.a); _target.width = (bounds.width * ratioX); _target.height = (bounds.height * ratioY); _target.rotation = (angle * (180 / Math.PI)); _target.x = _calculatedMatrix.tx; _target.y = _calculatedMatrix.ty; break; default: return (false); }; return (true); } public function get maxHeight():Number{ return (_maxHeight); } public function updateTarget():void{ if (_livePreview){ if (applyTransformToTarget()){ dispatchEvent(new Event(TARGET_TRANSFORMED)); }; }; } public function updateMetrics():void{ var bounds:Rectangle; var referencePoint:Point; bounds = _target.getBounds(_target); retrieveRegistration(); registration = _calculatedMatrix.transformPoint(_localRegistration); referencePoint = new Point(bounds.left, bounds.top); topLeft = _calculatedMatrix.transformPoint(referencePoint); referencePoint.x = bounds.right; topRight = _calculatedMatrix.transformPoint(referencePoint); referencePoint.y = bounds.bottom; bottomRight = _calculatedMatrix.transformPoint(referencePoint); referencePoint.x = bounds.left; bottomLeft = _calculatedMatrix.transformPoint(referencePoint); } public function isPositiveScale(matrix:Matrix=null):Boolean{ if (matrix == null){ matrix = _calculatedMatrix; }; return (Boolean((((matrix.a * matrix.d) - (matrix.c * matrix.b)) > 0))); } public function get localRegistration():Point{ return (_localRegistration); } public function set minRotation(value:Number):void{ _minRotation = value; } public function getRotationX(matrix:Matrix=null):Number{ if (matrix == null){ matrix = _calculatedMatrix; }; return (Math.atan2(matrix.b, matrix.a)); } public function getRotationY(matrix:Matrix=null):Number{ if (matrix == null){ matrix = _calculatedMatrix; }; return (Math.atan2(matrix.c, matrix.d)); } public function restrictScale(enforceNegativeScaling:Boolean=true):void{ var bounds:Rectangle; var minX:Number; var maxX:Number; var minY:Number; var maxY:Number; var currScaleX:Number; var currScaleY:Number; var scale:Number; var angle:Number; var currAngleX:Number; var baseAngleX:Number; var currAngleY:Number; var baseAngleY:Number; var baseX:Number; var toolX:Number; bounds = _target.getBounds(_target); if ((((bounds.width == 0)) || ((bounds.height == 0)))){ return; }; if (isNaN(_minWidth)){ minX = _minScaleX; } else { if (isNaN(_minScaleX)){ minX = (_minWidth / bounds.width); } else { minX = Math.max(_minScaleX, (_minWidth / bounds.width)); }; }; if (isNaN(_maxWidth)){ maxX = _maxScaleX; } else { if (isNaN(_maxScaleX)){ maxX = (_maxWidth / bounds.width); } else { maxX = Math.min(_maxScaleX, (_maxWidth / bounds.width)); }; }; if (isNaN(_minHeight)){ minY = _minScaleY; } else { if (isNaN(_minScaleY)){ minY = (_minHeight / bounds.height); } else { minY = Math.max(_minScaleY, (_minHeight / bounds.height)); }; }; if (isNaN(_maxHeight)){ maxY = _maxScaleY; } else { if (isNaN(_maxScaleY)){ maxY = (_maxHeight / bounds.height); } else { maxY = Math.min(_maxScaleY, (_maxHeight / bounds.height)); }; }; if (minX < 0){ minX = -(minX); }; if (maxX < 0){ maxX = -(maxX); }; if (minY < 0){ minY = -(minY); }; if (maxY < 0){ maxY = -(maxY); }; currScaleX = Math.sqrt(((_calculatedMatrix.a * _calculatedMatrix.a) + (_calculatedMatrix.b * _calculatedMatrix.b))); currScaleY = Math.sqrt(((_calculatedMatrix.c * _calculatedMatrix.c) + (_calculatedMatrix.d * _calculatedMatrix.d))); if (((enforceNegativeScaling) && (!(_negativeScaling)))){ currAngleX = Math.atan2(_calculatedMatrix.b, _calculatedMatrix.a); baseAngleX = Math.atan2(_baseMatrix.b, _baseMatrix.a); if (((!((currScaleX == 0))) && ((Math.abs((baseAngleX - currAngleX)) > (Math.PI / 2))))){ currScaleX = -(currScaleX); }; currAngleY = Math.atan2(_calculatedMatrix.c, _calculatedMatrix.d); baseAngleY = Math.atan2(_baseMatrix.c, _baseMatrix.d); if (((!((currScaleY == 0))) && ((Math.abs((baseAngleY - currAngleY)) > (Math.PI / 2))))){ currScaleY = -(currScaleY); }; }; if (((!(isNaN(minX))) && ((currScaleX < minX)))){ scale = minX; } else { if (((!(isNaN(maxX))) && ((currScaleX > maxX)))){ scale = maxX; } else { scale = Number.NaN; }; }; if (!isNaN(scale)){ if (currScaleX){ scale = (scale / currScaleX); _calculatedMatrix.a = (_calculatedMatrix.a * scale); _calculatedMatrix.b = (_calculatedMatrix.b * scale); } else { angle = Math.atan2(_baseMatrix.b, _baseMatrix.a); _calculatedMatrix.a = (scale * Math.cos(angle)); _calculatedMatrix.b = (scale * Math.sin(angle)); }; }; if (((!(isNaN(minY))) && ((currScaleY < minY)))){ scale = minY; } else { if (((!(isNaN(maxY))) && ((currScaleY > maxY)))){ scale = maxY; } else { scale = Number.NaN; }; }; if (!isNaN(scale)){ if (currScaleY){ scale = (scale / currScaleY); _calculatedMatrix.c = (_calculatedMatrix.c * scale); _calculatedMatrix.d = (_calculatedMatrix.d * scale); } else { angle = Math.atan2(_baseMatrix.c, _baseMatrix.d); _calculatedMatrix.c = (scale * Math.sin(angle)); _calculatedMatrix.d = (scale * Math.cos(angle)); }; }; if (((((enforceNegativeScaling) && (!(_negativeScaling)))) && (!(isPositiveScale(_calculatedMatrix))))){ baseX = (_baseMatrix.a + _baseMatrix.c); toolX = (_calculatedMatrix.a + _calculatedMatrix.c); if ((((((toolX < 0)) && ((baseX >= 0)))) || ((((toolX >= 0)) && ((baseX < 0)))))){ _calculatedMatrix.a = -(_calculatedMatrix.a); _calculatedMatrix.b = -(_calculatedMatrix.b); } else { _calculatedMatrix.c = -(_calculatedMatrix.c); _calculatedMatrix.d = -(_calculatedMatrix.d); }; }; } public function get minRotation():Number{ return (_minRotation); } public function get baseMatrix():Matrix{ return (_baseMatrix); } } }//package com.senocular.display.transform
Section 68
//Back (fl.transitions.easing.Back) package fl.transitions.easing { public class Back { public function Back(){ super(); } public static function easeOut(t:Number, b:Number, c:Number, d:Number, s:Number=0):Number{ if (!s){ s = 1.70158; }; t = ((t / d) - 1); return (((c * (((t * t) * (((s + 1) * t) + s)) + 1)) + b)); } public static function easeIn(t:Number, b:Number, c:Number, d:Number, s:Number=0):Number{ if (!s){ s = 1.70158; }; t = (t / d); return (((((c * t) * t) * (((s + 1) * t) - s)) + b)); } public static function easeInOut(t:Number, b:Number, c:Number, d:Number, s:Number=0):Number{ if (!s){ s = 1.70158; }; t = (t / (d / 2)); if (t < 1){ s = (s * 1.525); return ((((c / 2) * ((t * t) * (((s + 1) * t) - s))) + b)); }; t = (t - 2); s = (s * 1.525); return ((((c / 2) * (((t * t) * (((s + 1) * t) + s)) + 2)) + b)); } } }//package fl.transitions.easing
Section 69
//None (fl.transitions.easing.None) package fl.transitions.easing { public class None { public function None(){ super(); } public static function easeOut(t:Number, b:Number, c:Number, d:Number):Number{ return ((((c * t) / d) + b)); } public static function easeIn(t:Number, b:Number, c:Number, d:Number):Number{ return ((((c * t) / d) + b)); } public static function easeInOut(t:Number, b:Number, c:Number, d:Number):Number{ return ((((c * t) / d) + b)); } public static function easeNone(t:Number, b:Number, c:Number, d:Number):Number{ return ((((c * t) / d) + b)); } } }//package fl.transitions.easing
Section 70
//Tween (fl.transitions.Tween) package fl.transitions { import flash.display.*; import flash.utils.*; import flash.events.*; public class Tween extends EventDispatcher { private var _position:Number;// = NAN public var prevTime:Number;// = NAN public var prevPos:Number;// = NAN public var isPlaying:Boolean;// = false public var begin:Number;// = NAN private var _fps:Number;// = NAN private var _time:Number;// = NAN public var change:Number;// = NAN private var _finish:Number;// = NAN public var looping:Boolean;// = false private var _intervalID:uint;// = 0 public var func:Function; private var _timer:Timer;// = null private var _startTime:Number;// = NAN public var prop:String;// = "" private var _duration:Number;// = NAN public var obj:Object;// = null public var useSeconds:Boolean;// = false protected static var _mc:MovieClip = new MovieClip(); public function Tween(obj:Object, prop:String, func:Function, begin:Number, finish:Number, duration:Number, useSeconds:Boolean=false){ isPlaying = false; obj = null; prop = ""; func = function (t:Number, b:Number, c:Number, d:Number):Number{ return ((((c * t) / d) + b)); }; begin = NaN; change = NaN; useSeconds = false; prevTime = NaN; prevPos = NaN; looping = false; _duration = NaN; _time = NaN; _fps = NaN; _position = NaN; _startTime = NaN; _intervalID = 0; _finish = NaN; _timer = null; super(); if (!arguments.length){ return; }; this.obj = obj; this.prop = prop; this.begin = begin; this.position = begin; this.duration = duration; this.useSeconds = useSeconds; if ((func is Function)){ this.func = func; }; this.finish = finish; this._timer = new Timer(100); this.start(); } public function continueTo(finish:Number, duration:Number):void{ this.begin = this.position; this.finish = finish; if (!isNaN(duration)){ this.duration = duration; }; this.start(); } public function stop():void{ this.stopEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_STOP, this._time, this._position)); } private function fixTime():void{ if (this.useSeconds){ this._startTime = (getTimer() - (this._time * 1000)); }; } public function set FPS(fps:Number):void{ var oldIsPlaying:Boolean; oldIsPlaying = this.isPlaying; this.stopEnterFrame(); this._fps = fps; if (oldIsPlaying){ this.startEnterFrame(); }; } public function get finish():Number{ return ((this.begin + this.change)); } public function get duration():Number{ return (this._duration); } protected function startEnterFrame():void{ var milliseconds:Number; if (isNaN(this._fps)){ _mc.addEventListener(Event.ENTER_FRAME, this.onEnterFrame, false, 0, true); } else { milliseconds = (1000 / this._fps); this._timer.delay = milliseconds; this._timer.addEventListener(TimerEvent.TIMER, this.timerHandler, false, 0, true); this._timer.start(); }; this.isPlaying = true; } public function set time(t:Number):void{ this.prevTime = this._time; if (t > this.duration){ if (this.looping){ this.rewind((t - this._duration)); this.update(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_LOOP, this._time, this._position)); } else { if (this.useSeconds){ this._time = this._duration; this.update(); }; this.stop(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_FINISH, this._time, this._position)); }; } else { if (t < 0){ this.rewind(); this.update(); } else { this._time = t; this.update(); }; }; } protected function stopEnterFrame():void{ if (isNaN(this._fps)){ _mc.removeEventListener(Event.ENTER_FRAME, this.onEnterFrame); } else { this._timer.stop(); }; this.isPlaying = false; } public function getPosition(t:Number=NaN):Number{ if (isNaN(t)){ t = this._time; }; return (this.func(t, this.begin, this.change, this._duration)); } public function set finish(value:Number):void{ this.change = (value - this.begin); } public function set duration(d:Number):void{ this._duration = ((d)<=0) ? Infinity : d; } public function setPosition(p:Number):void{ this.prevPos = this._position; if (this.prop.length){ this.obj[this.prop] = (this._position = p); }; this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_CHANGE, this._time, this._position)); } public function resume():void{ this.fixTime(); this.startEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_RESUME, this._time, this._position)); } public function fforward():void{ this.time = this._duration; this.fixTime(); } protected function onEnterFrame(event:Event):void{ this.nextFrame(); } public function get position():Number{ return (this.getPosition(this._time)); } public function yoyo():void{ this.continueTo(this.begin, this.time); } public function nextFrame():void{ if (this.useSeconds){ this.time = ((getTimer() - this._startTime) / 1000); } else { this.time = (this._time + 1); }; } protected function timerHandler(timerEvent:TimerEvent):void{ this.nextFrame(); timerEvent.updateAfterEvent(); } public function get FPS():Number{ return (this._fps); } public function rewind(t:Number=0):void{ this._time = t; this.fixTime(); this.update(); } public function set position(p:Number):void{ this.setPosition(p); } public function get time():Number{ return (this._time); } private function update():void{ this.setPosition(this.getPosition(this._time)); } public function start():void{ this.rewind(); this.startEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_START, this._time, this._position)); } public function prevFrame():void{ if (!this.useSeconds){ this.time = (this._time - 1); }; } } }//package fl.transitions
Section 71
//TweenEvent (fl.transitions.TweenEvent) package fl.transitions { import flash.events.*; public class TweenEvent extends Event { public var time:Number;// = NAN public var position:Number;// = NAN public static const MOTION_START:String = "motionStart"; public static const MOTION_STOP:String = "motionStop"; public static const MOTION_LOOP:String = "motionLoop"; public static const MOTION_CHANGE:String = "motionChange"; public static const MOTION_FINISH:String = "motionFinish"; public static const MOTION_RESUME:String = "motionResume"; public function TweenEvent(type:String, time:Number, position:Number, bubbles:Boolean=false, cancelable:Boolean=false){ time = NaN; position = NaN; super(type, bubbles, cancelable); this.time = time; this.position = position; } override public function clone():Event{ return (new TweenEvent(this.type, this.time, this.position, this.bubbles, this.cancelable)); } } }//package fl.transitions
Section 72
//FoldedCardPrintSetup (FoldedCardPrintSetup) package { import flash.display.*; import flash.utils.*; import flash.geom.*; import flash.events.*; import flash.text.*; import flash.media.*; import flash.net.*; import flash.printing.*; import flash.ui.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.system.*; import flash.xml.*; public dynamic class FoldedCardPrintSetup extends MovieClip { public var printBtn:MovieClip; public var cancelBtn:MovieClip; public function FoldedCardPrintSetup(){ super(); addFrameScript(0, frame1); } function frame1(){ addEventListener(MouseEvent.CLICK, onClick); } public function onClick(e:MouseEvent):void{ switch (e.target){ case printBtn: dispatchEvent(new Event("printFolded", true)); case cancelBtn: (parent.parent as MovieClip).vanish(); break; default: break; }; } } }//package
Section 73
//FullPagePrintSetup (FullPagePrintSetup) package { import flash.display.*; import flash.utils.*; import flash.geom.*; import flash.events.*; import flash.text.*; import flash.media.*; import flash.net.*; import flash.printing.*; import flash.ui.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.system.*; import flash.xml.*; public dynamic class FullPagePrintSetup extends MovieClip { public var printBtn:MovieClip; public var cancelBtn:MovieClip; public function FullPagePrintSetup(){ super(); addFrameScript(0, frame1); } function frame1(){ addEventListener(MouseEvent.CLICK, onClick); } public function onClick(e:MouseEvent):void{ switch (e.target){ case printBtn: dispatchEvent(new Event("printFull", true)); case cancelBtn: (parent.parent as MovieClip).vanish(); break; default: break; }; } } }//package
Section 74
//MessageCarousel (MessageCarousel) package { import com.kid360.ui.*; public dynamic class MessageCarousel extends Carousel { public function MessageCarousel(){ super(); } } }//package
Section 75
//PrintPreviewer (PrintPreviewer) package { import flash.display.*; public dynamic class PrintPreviewer extends MovieClip { public var startOverBtn:SimpleButton; public var printConfirm:SimpleButton; public var printCancel:SimpleButton; public function PrintPreviewer(){ super(); } } }//package
Section 76
//SplashScreenSplashScreen (SplashScreenSplashScreen) package { import flash.display.*; import flash.utils.*; import flash.events.*; public dynamic class SplashScreenSplashScreen extends MovieClip { public var bar:MovieClip; public var t:Timer; public function SplashScreenSplashScreen(){ super(); addFrameScript(0, frame1); } function frame1(){ t = new Timer(100); t.addEventListener(TimerEvent.TIMER, onInterval); } public function showLoading(total:int, remaining:int):void{ var numLoaded:int; var fractionLoaded:Number; var newFrameNum:int; if (((t) && (!(t.running)))){ t.start(); }; numLoaded = (total - remaining); fractionLoaded = (numLoaded / total); trace((100 * fractionLoaded), "percent done"); newFrameNum = Math.round((100 * fractionLoaded)); if (newFrameNum > bar.currentFrame){ bar.gotoAndStop(newFrameNum); }; } public function onInterval(e:TimerEvent):void{ trace("barfr", bar.currentFrame); bar.nextFrame(); } public function cleanUp():void{ t.stop(); t.removeEventListener(TimerEvent.TIMER, onInterval); } } }//package
Section 77
//WorkspaceBackdrop (WorkspaceBackdrop) package { import flash.display.*; public dynamic class WorkspaceBackdrop extends MovieClip { public function WorkspaceBackdrop(){ super(); } } }//package

Library Items

Symbol 1 BitmapUsed by:2
Symbol 2 GraphicUses:1Used by:171
Symbol 3 GraphicUsed by:168 363
Symbol 4 GraphicUsed by:168
Symbol 5 GraphicUsed by:168
Symbol 6 GraphicUsed by:168
Symbol 7 GraphicUsed by:168
Symbol 8 GraphicUsed by:168
Symbol 9 GraphicUsed by:168
Symbol 10 GraphicUsed by:168
Symbol 11 GraphicUsed by:168
Symbol 12 GraphicUsed by:168
Symbol 13 GraphicUsed by:168
Symbol 14 GraphicUsed by:168
Symbol 15 GraphicUsed by:168
Symbol 16 GraphicUsed by:168
Symbol 17 GraphicUsed by:168
Symbol 18 GraphicUsed by:168
Symbol 19 GraphicUsed by:168
Symbol 20 GraphicUsed by:168
Symbol 21 GraphicUsed by:168
Symbol 22 GraphicUsed by:168
Symbol 23 GraphicUsed by:168
Symbol 24 GraphicUsed by:168
Symbol 25 GraphicUsed by:168
Symbol 26 GraphicUsed by:168
Symbol 27 GraphicUsed by:168
Symbol 28 GraphicUsed by:168
Symbol 29 GraphicUsed by:168
Symbol 30 GraphicUsed by:168
Symbol 31 GraphicUsed by:168
Symbol 32 GraphicUsed by:168
Symbol 33 GraphicUsed by:168
Symbol 34 GraphicUsed by:168
Symbol 35 GraphicUsed by:168
Symbol 36 GraphicUsed by:168
Symbol 37 GraphicUsed by:168
Symbol 38 GraphicUsed by:168
Symbol 39 GraphicUsed by:168
Symbol 40 GraphicUsed by:168
Symbol 41 GraphicUsed by:168
Symbol 42 GraphicUsed by:168
Symbol 43 GraphicUsed by:168
Symbol 44 GraphicUsed by:168
Symbol 45 GraphicUsed by:168
Symbol 46 GraphicUsed by:168
Symbol 47 GraphicUsed by:168
Symbol 48 GraphicUsed by:168
Symbol 49 GraphicUsed by:168
Symbol 50 GraphicUsed by:168
Symbol 51 GraphicUsed by:168
Symbol 52 GraphicUsed by:168
Symbol 53 GraphicUsed by:168
Symbol 54 GraphicUsed by:168
Symbol 55 GraphicUsed by:168
Symbol 56 GraphicUsed by:168
Symbol 57 GraphicUsed by:168
Symbol 58 GraphicUsed by:168
Symbol 59 GraphicUsed by:168
Symbol 60 GraphicUsed by:168
Symbol 61 GraphicUsed by:168
Symbol 62 GraphicUsed by:168
Symbol 63 GraphicUsed by:168
Symbol 64 GraphicUsed by:168
Symbol 65 GraphicUsed by:168
Symbol 66 GraphicUsed by:168
Symbol 67 GraphicUsed by:168
Symbol 68 GraphicUsed by:168
Symbol 69 GraphicUsed by:168
Symbol 70 GraphicUsed by:168
Symbol 71 GraphicUsed by:168
Symbol 72 GraphicUsed by:168
Symbol 73 GraphicUsed by:168
Symbol 74 GraphicUsed by:168
Symbol 75 GraphicUsed by:168
Symbol 76 GraphicUsed by:168
Symbol 77 GraphicUsed by:168
Symbol 78 GraphicUsed by:168
Symbol 79 GraphicUsed by:168
Symbol 80 GraphicUsed by:168
Symbol 81 GraphicUsed by:168
Symbol 82 GraphicUsed by:168
Symbol 83 GraphicUsed by:168
Symbol 84 GraphicUsed by:168
Symbol 85 GraphicUsed by:168
Symbol 86 GraphicUsed by:168
Symbol 87 GraphicUsed by:168
Symbol 88 GraphicUsed by:168
Symbol 89 GraphicUsed by:168
Symbol 90 GraphicUsed by:168
Symbol 91 GraphicUsed by:168
Symbol 92 GraphicUsed by:168
Symbol 93 GraphicUsed by:168
Symbol 94 GraphicUsed by:168
Symbol 95 GraphicUsed by:168
Symbol 96 GraphicUsed by:168
Symbol 97 GraphicUsed by:168
Symbol 98 GraphicUsed by:168
Symbol 99 GraphicUsed by:168
Symbol 100 GraphicUsed by:168
Symbol 101 GraphicUsed by:168
Symbol 102 GraphicUsed by:168
Symbol 103 GraphicUsed by:168
Symbol 104 GraphicUsed by:168
Symbol 105 GraphicUsed by:168
Symbol 106 GraphicUsed by:168
Symbol 107 GraphicUsed by:168
Symbol 108 GraphicUsed by:168
Symbol 109 GraphicUsed by:168
Symbol 110 GraphicUsed by:168
Symbol 111 GraphicUsed by:168
Symbol 112 GraphicUsed by:168
Symbol 113 GraphicUsed by:168
Symbol 114 GraphicUsed by:168
Symbol 115 GraphicUsed by:168
Symbol 116 GraphicUsed by:168
Symbol 117 GraphicUsed by:168
Symbol 118 GraphicUsed by:168
Symbol 119 GraphicUsed by:168
Symbol 120 GraphicUsed by:168
Symbol 121 GraphicUsed by:168
Symbol 122 GraphicUsed by:168
Symbol 123 GraphicUsed by:168
Symbol 124 GraphicUsed by:168
Symbol 125 GraphicUsed by:168
Symbol 126 GraphicUsed by:168
Symbol 127 GraphicUsed by:168
Symbol 128 GraphicUsed by:168
Symbol 129 GraphicUsed by:168
Symbol 130 GraphicUsed by:168
Symbol 131 GraphicUsed by:168
Symbol 132 GraphicUsed by:168
Symbol 133 GraphicUsed by:168
Symbol 134 GraphicUsed by:168
Symbol 135 GraphicUsed by:168
Symbol 136 GraphicUsed by:168
Symbol 137 GraphicUsed by:168
Symbol 138 GraphicUsed by:168
Symbol 139 GraphicUsed by:168
Symbol 140 GraphicUsed by:168
Symbol 141 GraphicUsed by:168
Symbol 142 GraphicUsed by:168
Symbol 143 GraphicUsed by:168
Symbol 144 GraphicUsed by:168
Symbol 145 GraphicUsed by:168
Symbol 146 GraphicUsed by:168
Symbol 147 GraphicUsed by:168
Symbol 148 GraphicUsed by:168
Symbol 149 GraphicUsed by:168
Symbol 150 GraphicUsed by:168
Symbol 151 GraphicUsed by:168
Symbol 152 GraphicUsed by:168
Symbol 153 GraphicUsed by:168
Symbol 154 GraphicUsed by:168
Symbol 155 GraphicUsed by:168
Symbol 156 GraphicUsed by:168
Symbol 157 GraphicUsed by:168
Symbol 158 GraphicUsed by:168
Symbol 159 GraphicUsed by:168
Symbol 160 GraphicUsed by:168
Symbol 161 GraphicUsed by:168
Symbol 162 GraphicUsed by:168
Symbol 163 GraphicUsed by:168
Symbol 164 GraphicUsed by:168
Symbol 165 GraphicUsed by:168
Symbol 166 GraphicUsed by:168
Symbol 167 GraphicUsed by:168
Symbol 168 MovieClipUses:3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167Used by:171
Symbol 169 BitmapUsed by:170
Symbol 170 GraphicUses:169Used by:171
Symbol 171 MovieClip {WorkspaceBackdrop}Uses:2 168 170
Symbol 172 BitmapUsed by:173
Symbol 173 GraphicUses:172Used by:176
Symbol 174 FontUsed by:175 191 199 200 201
Symbol 175 EditableTextUses:174Used by:176
Symbol 176 MovieClip {com.kid360.hasbro.clickncolor.SplashScreen}Uses:173 175
Symbol 177 GraphicUsed by:188
Symbol 178 BitmapUsed by:179
Symbol 179 GraphicUses:178Used by:188
Symbol 180 GraphicUsed by:188
Symbol 181 GraphicUsed by:188
Symbol 182 GraphicUsed by:187
Symbol 183 GraphicUsed by:187
Symbol 184 ShapeTweeningUsed by:187
Symbol 185 GraphicUsed by:187
Symbol 186 GraphicUsed by:187
Symbol 187 MovieClipUses:182 183 184 185 186Used by:188
Symbol 188 MovieClip {SplashScreenSplashScreen}Uses:177 179 180 181 187
Symbol 189 MovieClip {com.kid360.hasbro.clickncolor.buttons.AssetCarouselButton}
Symbol 190 GraphicUsed by:196
Symbol 191 EditableTextUses:174Used by:196
Symbol 192 GraphicUsed by:196
Symbol 193 SoundUsed by:196 227 231
Symbol 194 GraphicUsed by:196
Symbol 195 SoundUsed by:196 227 231
Symbol 196 MovieClip {com.kid360.hasbro.clickncolor.buttons.MessageCarouselButton}Uses:190 191 192 193 194 195
Symbol 197 GraphicUsed by:205
Symbol 198 GraphicUsed by:205
Symbol 199 EditableTextUses:174Used by:205
Symbol 200 EditableTextUses:174Used by:205
Symbol 201 EditableTextUses:174Used by:205
Symbol 202 BitmapUsed by:203
Symbol 203 GraphicUses:202Used by:204
Symbol 204 MovieClipUses:203Used by:205
Symbol 205 MovieClip {com.kid360.hasbro.clickncolor.GreetingCardImposition}Uses:197 198 199 200 201 204
Symbol 206 FontUsed by:207
Symbol 207 EditableTextUses:206Used by:208
Symbol 208 MovieClip {com.kid360.hasbro.clickncolor.FullPageImposition}Uses:207
Symbol 209 GraphicUsed by:212 213 218 219
Symbol 210 FontUsed by:211
Symbol 211 EditableTextUses:210Used by:212
Symbol 212 MovieClip {cnc_fla.windowTab_21}Uses:209 211Used by:213
Symbol 213 MovieClip {com.kid360.hasbro.clickncolor.TabbedWindow}Uses:209 212
Symbol 214 GraphicUsed by:215
Symbol 215 MovieClipUses:214Used by:218 219
Symbol 216 GraphicUsed by:217
Symbol 217 MovieClipUses:216Used by:218 219
Symbol 218 MovieClip {FoldedCardPrintSetup}Uses:209 215 217
Symbol 219 MovieClip {FullPagePrintSetup}Uses:209 215 217
Symbol 220 GraphicUsed by:232
Symbol 221 GraphicUsed by:222
Symbol 222 MovieClipUses:221Used by:232
Symbol 223 GraphicUsed by:227 231
Symbol 224 GraphicUsed by:227
Symbol 225 GraphicUsed by:227
Symbol 226 GraphicUsed by:227
Symbol 227 MovieClip {cnc_fla.cancel_btn_14}Uses:223 224 225 193 226 195Used by:232
Symbol 228 GraphicUsed by:231
Symbol 229 GraphicUsed by:231
Symbol 230 GraphicUsed by:231
Symbol 231 MovieClip {cnc_fla.ok_btn_15}Uses:223 228 229 193 230 195Used by:232
Symbol 232 MovieClip {com.kid360.hasbro.clickncolor.FoldedCardDialog}Uses:220 222 227 231
Symbol 233 GraphicUsed by:234
Symbol 234 MovieClipUses:233Used by:235
Symbol 235 MovieClip {MessageCarousel}Uses:234
Symbol 236 BitmapUsed by:237
Symbol 237 GraphicUses:236Used by:363
Symbol 238 GraphicUsed by:363
Symbol 239 GraphicUsed by:363
Symbol 240 GraphicUsed by:363
Symbol 241 GraphicUsed by:363
Symbol 242 GraphicUsed by:363
Symbol 243 GraphicUsed by:363
Symbol 244 GraphicUsed by:363
Symbol 245 GraphicUsed by:363
Symbol 246 GraphicUsed by:363
Symbol 247 GraphicUsed by:363
Symbol 248 GraphicUsed by:363
Symbol 249 GraphicUsed by:363
Symbol 250 GraphicUsed by:363
Symbol 251 GraphicUsed by:363
Symbol 252 GraphicUsed by:363
Symbol 253 GraphicUsed by:363
Symbol 254 GraphicUsed by:363
Symbol 255 GraphicUsed by:363
Symbol 256 GraphicUsed by:363
Symbol 257 GraphicUsed by:363
Symbol 258 GraphicUsed by:363
Symbol 259 GraphicUsed by:363
Symbol 260 GraphicUsed by:363
Symbol 261 GraphicUsed by:363
Symbol 262 GraphicUsed by:363
Symbol 263 GraphicUsed by:363
Symbol 264 GraphicUsed by:363
Symbol 265 GraphicUsed by:363
Symbol 266 GraphicUsed by:363
Symbol 267 GraphicUsed by:363
Symbol 268 GraphicUsed by:363
Symbol 269 GraphicUsed by:363
Symbol 270 GraphicUsed by:363
Symbol 271 GraphicUsed by:363
Symbol 272 GraphicUsed by:363
Symbol 273 GraphicUsed by:363
Symbol 274 GraphicUsed by:363
Symbol 275 GraphicUsed by:363
Symbol 276 GraphicUsed by:363
Symbol 277 GraphicUsed by:363
Symbol 278 GraphicUsed by:363
Symbol 279 GraphicUsed by:363
Symbol 280 GraphicUsed by:363
Symbol 281 GraphicUsed by:363
Symbol 282 GraphicUsed by:363
Symbol 283 GraphicUsed by:363
Symbol 284 GraphicUsed by:363
Symbol 285 GraphicUsed by:363
Symbol 286 GraphicUsed by:363
Symbol 287 GraphicUsed by:363
Symbol 288 GraphicUsed by:363
Symbol 289 GraphicUsed by:363
Symbol 290 GraphicUsed by:363
Symbol 291 GraphicUsed by:363
Symbol 292 GraphicUsed by:363
Symbol 293 GraphicUsed by:363
Symbol 294 GraphicUsed by:363
Symbol 295 GraphicUsed by:363
Symbol 296 GraphicUsed by:363
Symbol 297 GraphicUsed by:363
Symbol 298 GraphicUsed by:363
Symbol 299 GraphicUsed by:363
Symbol 300 GraphicUsed by:363
Symbol 301 GraphicUsed by:363
Symbol 302 GraphicUsed by:363
Symbol 303 GraphicUsed by:363
Symbol 304 GraphicUsed by:363
Symbol 305 GraphicUsed by:363
Symbol 306 GraphicUsed by:363
Symbol 307 GraphicUsed by:363
Symbol 308 GraphicUsed by:363
Symbol 309 GraphicUsed by:363
Symbol 310 GraphicUsed by:363
Symbol 311 GraphicUsed by:363
Symbol 312 GraphicUsed by:363
Symbol 313 GraphicUsed by:363
Symbol 314 GraphicUsed by:363
Symbol 315 GraphicUsed by:363
Symbol 316 GraphicUsed by:363
Symbol 317 GraphicUsed by:363
Symbol 318 GraphicUsed by:363
Symbol 319 GraphicUsed by:363
Symbol 320 GraphicUsed by:363
Symbol 321 GraphicUsed by:363
Symbol 322 GraphicUsed by:363
Symbol 323 GraphicUsed by:363
Symbol 324 GraphicUsed by:363
Symbol 325 GraphicUsed by:363
Symbol 326 GraphicUsed by:363
Symbol 327 GraphicUsed by:363
Symbol 328 GraphicUsed by:363
Symbol 329 GraphicUsed by:363
Symbol 330 GraphicUsed by:363
Symbol 331 GraphicUsed by:363
Symbol 332 GraphicUsed by:363
Symbol 333 GraphicUsed by:363
Symbol 334 GraphicUsed by:363
Symbol 335 GraphicUsed by:363
Symbol 336 GraphicUsed by:363
Symbol 337 GraphicUsed by:363
Symbol 338 GraphicUsed by:363
Symbol 339 GraphicUsed by:363
Symbol 340 GraphicUsed by:363
Symbol 341 GraphicUsed by:363
Symbol 342 GraphicUsed by:363
Symbol 343 GraphicUsed by:363
Symbol 344 GraphicUsed by:363
Symbol 345 GraphicUsed by:363
Symbol 346 GraphicUsed by:363
Symbol 347 GraphicUsed by:363
Symbol 348 GraphicUsed by:363
Symbol 349 GraphicUsed by:363
Symbol 350 GraphicUsed by:363
Symbol 351 GraphicUsed by:363
Symbol 352 GraphicUsed by:363
Symbol 353 GraphicUsed by:356 357
Symbol 354 BitmapUsed by:355
Symbol 355 GraphicUses:354Used by:356
Symbol 356 MovieClipUses:353 355Used by:357
Symbol 357 MovieClipUses:353 356Used by:358
Symbol 358 MovieClipUses:357Used by:363
Symbol 359 GraphicUsed by:363
Symbol 360 FontUsed by:361
Symbol 361 TextUses:360Used by:363
Symbol 362 GraphicUsed by:363
Symbol 363 MovieClip {com.kid360.hasbro.clickncolor.PrintComposition}Uses:237 3 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 358 359 361 362
Symbol 364 GraphicUsed by:382
Symbol 365 GraphicUsed by:369
Symbol 366 GraphicUsed by:369
Symbol 367 GraphicUsed by:369
Symbol 368 GraphicUsed by:369
Symbol 369 ButtonUses:365 366 367 368Used by:382
Symbol 370 GraphicUsed by:374
Symbol 371 GraphicUsed by:374
Symbol 372 GraphicUsed by:374
Symbol 373 GraphicUsed by:374
Symbol 374 ButtonUses:370 371 372 373Used by:382
Symbol 375 GraphicUsed by:381
Symbol 376 GraphicUsed by:377
Symbol 377 MovieClipUses:376Used by:381
Symbol 378 GraphicUsed by:381
Symbol 379 GraphicUsed by:381
Symbol 380 GraphicUsed by:381
Symbol 381 ButtonUses:375 377 378 379 380Used by:382
Symbol 382 MovieClip {PrintPreviewer}Uses:364 369 374 381

Instance Names

"legalese"Symbol 176 MovieClip {com.kid360.hasbro.clickncolor.SplashScreen} Frame 1Symbol 175 EditableText
"bar"Symbol 188 MovieClip {SplashScreenSplashScreen} Frame 1Symbol 187 MovieClip
"label"Symbol 196 MovieClip {com.kid360.hasbro.clickncolor.buttons.MessageCarouselButton} Frame 1Symbol 191 EditableText
"greeting"Symbol 205 MovieClip {com.kid360.hasbro.clickncolor.GreetingCardImposition} Frame 1Symbol 199 EditableText
"copyright"Symbol 205 MovieClip {com.kid360.hasbro.clickncolor.GreetingCardImposition} Frame 1Symbol 200 EditableText
"advertising"Symbol 205 MovieClip {com.kid360.hasbro.clickncolor.GreetingCardImposition} Frame 1Symbol 201 EditableText
"legalese"Symbol 208 MovieClip {com.kid360.hasbro.clickncolor.FullPageImposition} Frame 1Symbol 207 EditableText
"label"Symbol 212 MovieClip {cnc_fla.windowTab_21} Frame 1Symbol 211 EditableText
"btn1"Symbol 213 MovieClip {com.kid360.hasbro.clickncolor.TabbedWindow} Frame 1Symbol 212 MovieClip {cnc_fla.windowTab_21}
"btn2"Symbol 213 MovieClip {com.kid360.hasbro.clickncolor.TabbedWindow} Frame 1Symbol 212 MovieClip {cnc_fla.windowTab_21}
"cancelBtn"Symbol 218 MovieClip {FoldedCardPrintSetup} Frame 1Symbol 215 MovieClip
"printBtn"Symbol 218 MovieClip {FoldedCardPrintSetup} Frame 1Symbol 217 MovieClip
"cancelBtn"Symbol 219 MovieClip {FullPagePrintSetup} Frame 1Symbol 215 MovieClip
"printBtn"Symbol 219 MovieClip {FullPagePrintSetup} Frame 1Symbol 217 MovieClip
"cancelBtn"Symbol 232 MovieClip {com.kid360.hasbro.clickncolor.FoldedCardDialog} Frame 1Symbol 227 MovieClip {cnc_fla.cancel_btn_14}
"okBtn"Symbol 232 MovieClip {com.kid360.hasbro.clickncolor.FoldedCardDialog} Frame 1Symbol 231 MovieClip {cnc_fla.ok_btn_15}
"prevBtn"Symbol 235 MovieClip {MessageCarousel} Frame 1Symbol 234 MovieClip
"nextBtn"Symbol 235 MovieClip {MessageCarousel} Frame 1Symbol 234 MovieClip
"printCancel"Symbol 382 MovieClip {PrintPreviewer} Frame 1Symbol 369 Button
"printConfirm"Symbol 382 MovieClip {PrintPreviewer} Frame 1Symbol 374 Button
"startOverBtn"Symbol 382 MovieClip {PrintPreviewer} Frame 1Symbol 381 Button

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.
EnableDebugger2 (64)Timeline Frame 131 bytes "..$1$fB$5i8wQCeOHK8gyR7IpdOjb/."




http://swfchan.com/42/207994/info.shtml
Created: 9/10 -2018 07:07:06 Last modified: 9/10 -2018 07:07:06 Server time: 03/05 -2024 14:39:48