{"id":606,"date":"2011-03-31T05:47:13","date_gmt":"2011-03-31T09:47:13","guid":{"rendered":"http:\/\/www.searchenginegenie.com\/web-design-blog\/?p=606"},"modified":"2011-04-19T04:52:21","modified_gmt":"2011-04-19T08:52:21","slug":"flash-as3-tween-vibrating-gallery","status":"publish","type":"post","link":"https:\/\/www.searchenginegenie.com\/web-design-blog\/flash-as3-tween-vibrating-gallery\/","title":{"rendered":"Flash AS3 Tween Vibrating Gallery"},"content":{"rendered":"<p><object id=\"test\" classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" width=\"525\" height=\"450\" codebase=\"http:\/\/download.macromedia.com\/pub\/shockwave\/cabs\/flash\/swflash.cab#version=6,0,40,0\"><param name=\"src\" value=\"http:\/\/www.searchenginegenie.com\/web-design-blog\/wp-content\/uploads\/2011\/03\/Flash-AS3-Tween-Vibrating-Gallery1.swf\" \/><param name=\"name\" value=\"test1\" \/><embed id=\"test\" type=\"application\/x-shockwave-flash\" width=\"525\" height=\"450\" src=\"http:\/\/www.searchenginegenie.com\/web-design-blog\/wp-content\/uploads\/2011\/03\/Flash-AS3-Tween-Vibrating-Gallery1.swf\" name=\"test1\"><\/embed><\/object><\/p>\n<p>Step 1: Open a new a document in flash Actionscript 3.0 in the size of 525X450 PX.<\/p>\n<p>Step 2: Set up the BG color as black or needed color.<\/p>\n<p>Step 3: Paste the following code in Layer-1, first Keyframe by giving F9 to open the actionacript panel:<\/p>\n<p>import fl.transitions.*;<br \/>\nimport fl.transitions.easing.*;<br \/>\nimport flash.display.Bitmap;<br \/>\nimport flash.display.BitmapData;<br \/>\nimport flash.geom.Matrix;<br \/>\nimport flash.display.Sprite;<br \/>\nimport asfiles.ascript.objects.Tile;<br \/>\nimport asfiles.ascript.loaders.GalleryLoader;<br \/>\nimport asfiles.ascript.preloaders.LoadSpinner2;<br \/>\nimport flash.display.Loader;<br \/>\nimport flash.display.Shape;<br \/>\nimport flash.events.MouseEvent;<br \/>\nimport flash.text.TextFormat;<br \/>\nimport flash.events.Event;<br \/>\nvar dw:Number = 525;<br \/>\nvar dh:Number = 450;<br \/>\nvar galLoader:GalleryLoader;<br \/>\nvar numPics:int;<br \/>\nvar thumbsData:Vector.&lt;BitmapData&gt;<br \/>\nvar largePiURLs:Vector.&lt;String&gt;;<br \/>\nvar captions:Vector.&lt;String&gt;;<br \/>\nvar spinner:LoadSpinner2;<br \/>\nvar picWidth:Number;<br \/>\nvar picHeight:Number;<br \/>\nvar divisions:Number;<br \/>\nvar gap:Number;<br \/>\nvar tiles:Vector.&lt;Tile&gt;;<br \/>\nvar tileWidth:Number;<br \/>\nvar tileHeight:Number;<br \/>\nvar galleryHolder:Sprite;<br \/>\nvar parameterTween:Tween;<br \/>\nvar variationX:Vector.&lt;Number&gt;;<br \/>\nvar variationY:Vector.&lt;Number&gt;;<br \/>\nvar variationMax:Number;<br \/>\nvar collapsed:Boolean;<br \/>\nvar currentPicIndex:int;<br \/>\nvar captionBox:TextField;<br \/>\nvar collapseTweenDuration:Number;<br \/>\nvar separateTweenDuration:Number;<br \/>\nvar closedPositionOffsetY:Number;<br \/>\nvar thumbnails:Vector.&lt;Bitmap&gt;;<br \/>\nvar pics:Vector.&lt;Bitmap&gt;;<br \/>\nvar angles:Vector.&lt;Number&gt;;<br \/>\nvar loader:Loader;<br \/>\nvar isLoading:Boolean;<br \/>\nvar scrollTweenDuration:Number;<br \/>\nvar pageShift:int;<br \/>\nvar numTiles:int;<br \/>\nvar numPages:int;<br \/>\nvar backSkip:int;<br \/>\nvar navigationPanel:Sprite;<br \/>\n\/\/\/\/\/\/\/\/\/\/<br \/>\nstage.scaleMode = StageScaleMode.NO_SCALE;<br \/>\n\/\/this paramObject will be used for our tweened motion:<br \/>\nvar paramObject:Object = {t:0};<br \/>\n\/\/we create some instances of MovieClips from the library:<br \/>\nvar btnNextImage:BtnNextImage = new BtnNextImage();<br \/>\nvar btnPrevImage:BtnPrevImage = new BtnPrevImage();<br \/>\nvar btnNextPage:BtnNextPage = new BtnNextPage();<br \/>\nvar btnPrevPage:BtnPrevPage = new BtnPrevPage();<br \/>\nvar btnReturn:BtnReturn = new BtnReturn();<br \/>\nvar mcViewInstructions:McViewInstructions = new McViewInstructions();<br \/>\ninit();<br \/>\n\/\/\/\/\/\/\/\/\/<br \/>\nfunction init():void {<br \/>\nthumbsData = new Vector.&lt;BitmapData&gt;();<br \/>\nlargePicURLs = new Vector.&lt;String&gt;();<br \/>\ncaptions = new Vector.&lt;String&gt;();<br \/>\nloader = new Loader();<br \/>\nisLoading = false; \/\/boolean flag for image loading after thumbnail click<br \/>\ninfoBox.text = &#8220;Loading thumbnails, please wait&#8230;&#8221;;<br \/>\ngalleryHolder = new Sprite();<br \/>\ngalleryHolder.x = dw\/2 &#8211; 30;<br \/>\ngalleryHolder.y = dh\/2 + 10;<br \/>\nthis.addChild(galleryHolder);<br \/>\nbtnPrevImage.mouseEnabled = false;<br \/>\nbtnNextImage.mouseEnabled = false;<br \/>\nbtnReturn.mouseEnabled = false;<br \/>\nspinner = new LoadSpinner2(100,100);<br \/>\nspinner.setColors(0x000762C5, 0xFF0762C5);<br \/>\nspinner.bgAlpha = 20;<br \/>\nspinner.x = galleryHolder.x;<br \/>\nspinner.y = galleryHolder.y;<br \/>\nthis.addChild(spinner);<br \/>\nspinner.startSpinner();<br \/>\ngalLoader = new GalleryLoader(&#8220;gallery.xml&#8221;);<br \/>\ngalLoader.addEventListener(GalleryLoader.XMLLOAD_ERROR, xmlError);<br \/>\ngalLoader.addEventListener(GalleryLoader.IMGSLOAD_ERROR, imgsError);<br \/>\ngalLoader.addEventListener(GalleryLoader.ALL_LOADED, loadEnded);<br \/>\ngalLoader.loadXML();<br \/>\n}<br \/>\nfunction xmlError(e:Event):void {<br \/>\ngalLoader.removeEventListener(GalleryLoader.XMLLOAD_ERROR, xmlError);<br \/>\ngalLoader.removeEventListener(GalleryLoader.ALL_LOADED, loadEnded);<br \/>\ngalLoader.removeEventListener(GalleryLoader.IMGSLOAD_ERROR, imgsError);<br \/>\ninfoBox.text=&#8221;There has been an error loading the XML file. The server may be busy. Try refreshing the page.&#8221;;<br \/>\nspinner.stopSpinner();<br \/>\nspinner.visible=false;<br \/>\n}<br \/>\nfunction imgsError(e:Event):void {<br \/>\ngalLoader.removeEventListener(GalleryLoader.XMLLOAD_ERROR, xmlError);<br \/>\ngalLoader.removeEventListener(GalleryLoader.ALL_LOADED, loadEnded);<br \/>\ngalLoader.removeEventListener(GalleryLoader.IMGSLOAD_ERROR, imgsError);<br \/>\ninfoBox.text=&#8221;There has been an error loading thumbnails. The server may be busy. Try refreshing the page.&#8221;;<br \/>\nspinner.stopSpinner();<br \/>\nspinner.visible=false;<br \/>\n}<br \/>\nfunction loadEnded(e:Event):void {<br \/>\ngalLoader.removeEventListener(GalleryLoader.XMLLOAD_ERROR, xmlError);<br \/>\ngalLoader.removeEventListener(GalleryLoader.ALL_LOADED, loadEnded);<br \/>\ngalLoader.removeEventListener(GalleryLoader.IMGSLOAD_ERROR, imgsError);<br \/>\ninfoBox.text=&#8221;&#8221;;<br \/>\nspinner.stopSpinner();<br \/>\nspinner.visible=false;<br \/>\ninitApp();<br \/>\n}<br \/>\nfunction populateVecs():void {<br \/>\nvar j:int;<br \/>\nfor(j=0;j&lt;numPics;j++){<br \/>\nthumbsData[j]=galLoader.bmpDataVec[j];<br \/>\nlargePicURLs[j]=galLoader.picsVec[j];<br \/>\ncaptions[j]=galLoader.capsVec[j];<br \/>\n}<br \/>\n}<br \/>\nfunction initApp():void {<br \/>\nnumPics = galLoader.numPics;<br \/>\npopulateVecs();<br \/>\nthumbnails = new Vector.&lt;Bitmap&gt;();<br \/>\ncreateThumbnailBitmaps();<br \/>\npicWidth = 400;<br \/>\npicHeight = 300;<br \/>\ngap = 10;<br \/>\ndivisions = 4;<br \/>\nnumTiles = divisions*divisions;<br \/>\nvariationMax = 12;<br \/>\nnumPages = Math.ceil(Number(numPics)\/Number(numTiles));<br \/>\nbackSkip = numPages*numTiles &#8211; numPics;<br \/>\ncollapseTweenDuration = 75;<br \/>\nseparateTweenDuration = 30;<br \/>\nscrollTweenDuration = 40;<br \/>\nclosedPositionOffsetY = 0;<br \/>\npageShift = 0;<br \/>\nnavigationPanel = new Sprite();<br \/>\nthis.addChild(navigationPanel);<br \/>\nnavigationPanel.mouseEnabled = false;<br \/>\nnavigationPanel.y = galleryHolder.y + closedPositionOffsetY &#8211; picHeight\/2 &#8211; 40;<br \/>\nnavigationPanel.x = galleryHolder.x + 2;<br \/>\nnavigationPanel.addChild(btnNextImage);<br \/>\nbtnNextImage.y = 0;<br \/>\nbtnNextImage.x = btnReturn.width\/2 + 20;<br \/>\nnavigationPanel.addChild(btnPrevImage);<br \/>\nbtnPrevImage.y = 0;<br \/>\nbtnPrevImage.x = -btnReturn.width\/2 &#8211; 20;<br \/>\nnavigationPanel.addChild(btnReturn);<br \/>\nbtnReturn.y = 0;<br \/>\nbtnReturn.x = 0;<br \/>\nthis.addChild(mcViewInstructions);<br \/>\nmcViewInstructions.y = galleryHolder.y &#8211; (picHeight + gap*(divisions-1))\/2 &#8211; 30;<br \/>\nmcViewInstructions.x = galleryHolder.x + 3;<br \/>\nmcViewInstructions.mouseEnabled = false;<br \/>\nthis.addChild(btnPrevPage);<br \/>\nbtnPrevPage.x = galleryHolder.x + (picWidth + gap*(divisions-1))\/2 + 30;<br \/>\nbtnPrevPage.y = galleryHolder.y &#8211; 8;<br \/>\nthis.addChild(btnNextPage);<br \/>\nbtnNextPage.x = galleryHolder.x + (picWidth + gap*(divisions-1))\/2 + 30;<br \/>\nbtnNextPage.y = galleryHolder.y + 12;<br \/>\nbtnPrevImage.addEventListener(MouseEvent.CLICK, prevImage);<br \/>\nbtnNextImage.addEventListener(MouseEvent.CLICK, nextImage);<br \/>\nbtnReturn.addEventListener(MouseEvent.CLICK, returnToThumbs);<br \/>\nbtnNextPage.addEventListener(MouseEvent.CLICK, btnNextPageHandler);<br \/>\nbtnPrevPage.addEventListener(MouseEvent.CLICK, btnPrevPageHandler);<br \/>\nsetPagingVisibility();<br \/>\nnavigationPanel.alpha = 0;<br \/>\ntiles = new Vector.&lt;Tile&gt;();<br \/>\nvariationX = new Vector.&lt;Number&gt;();<br \/>\nvariationY = new Vector.&lt;Number&gt;();<br \/>\nangles = new Vector.&lt;Number&gt;();<br \/>\ntileWidth = picWidth\/divisions;<br \/>\ntileHeight = picHeight\/divisions;<br \/>\nvar dsf:DropShadowFilter = new DropShadowFilter(6,45,0&#215;000000,2,6,6,1);<br \/>\ngalleryHolder.filters = [dsf];<br \/>\nvar format:TextFormat = new TextFormat(&#8220;arial&#8221;,12,0xffffff,false,true);<br \/>\nformat.align = TextFormatAlign.CENTER;<br \/>\ncaptionBox = new TextField();<br \/>\ncaptionBox.defaultTextFormat = format;<br \/>\ncaptionBox.autoSize = TextFieldAutoSize.CENTER;<br \/>\ncaptionBox.text = &#8220;&#8221;;<br \/>\ncaptionBox.x = galleryHolder.x &#8211; captionBox.width\/2;<br \/>\ncaptionBox.y = 20+galleryHolder.y + 0.5*picHeight + closedPositionOffsetY;<br \/>\nthis.addChildAt(captionBox,0);<br \/>\ncaptionBox.mouseEnabled = false;<br \/>\nsetUpThumbnails();<br \/>\nsetUpTiles();<br \/>\ncollapsed = false;<br \/>\n}<br \/>\nfunction createThumbnailBitmaps():void {<br \/>\nvar i:int;<br \/>\nfor (i = 0; i &lt; galLoader.numPics; i++) {<br \/>\nthumbnails.push(new Bitmap(galLoader.bmpDataVec[i]));<br \/>\n}<br \/>\n}<br \/>\nfunction setUpThumbnails():void {<br \/>\nvar k:int;<br \/>\nvar scaleFactor:Number;<br \/>\nfor (k = 0; k &lt; numPics; k++) {<br \/>\nscaleFactor = tileWidth\/thumbnails[k].width;<br \/>\nthumbnails[k].x = -scaleFactor*thumbnails[k].width\/2;<br \/>\nthumbnails[k].y = -scaleFactor*thumbnails[k].height\/2;<br \/>\nthumbnails[k].scaleX = thumbnails[k].scaleY = scaleFactor;<br \/>\n}<br \/>\n}<br \/>\nfunction setUpTiles():void {<br \/>\nfor (var i=0; i&lt;= divisions-1; i++) {<br \/>\nfor (var j=0; j&lt;= divisions-1; j++) {<br \/>\nvar thisTile:Tile = new Tile();<br \/>\nthisTile.thumbnailHolder.addChild(thumbnails[i*divisions + j]);<br \/>\ngalleryHolder.addChild(thisTile);<br \/>\nthisTile.openPosition.x = -(picWidth + gap*(divisions-1))\/2 + tileWidth\/2+(tileWidth+gap)*j;\/\/ + (2*Math.random()-1)*gap*0.5;<br \/>\nthisTile.openPosition.y = -(picHeight + gap*(divisions-1))\/2 + tileHeight\/2+(tileHeight+gap)*i;\/\/ + (2*Math.random()-1)*gap*0.5;<br \/>\nthisTile.closedPosition.x = -picWidth\/2 + tileWidth\/2 + tileWidth*j;<br \/>\nthisTile.closedPosition.y = closedPositionOffsetY &#8211; picHeight\/2 + tileHeight\/2 + tileHeight*i;<br \/>\nthisTile.x = thisTile.openPosition.x;<br \/>\nthisTile.y = thisTile.openPosition.y;<br \/>\nthisTile.which = i*divisions+j;<br \/>\nthisTile.buttonMode = true;<br \/>\ntiles.push(thisTile);<br \/>\nvariationX.push(4*variationMax*(2*Math.random()-1));<br \/>\nvariationY.push(4*variationMax*(2*Math.random()-1));<br \/>\nangles.push(0);<br \/>\nthisTile.addEventListener(MouseEvent.CLICK, onTileClick);<br \/>\n}}}<br \/>\nfunction onTileClick(evt:MouseEvent):void {<br \/>\nif(isLoading||collapsed){<br \/>\nreturn;<br \/>\n}<br \/>\nisLoading=true;<br \/>\ncurrentPicIndex = evt.target.which;<br \/>\nsetFlipVisibility();<br \/>\nspinner.visible = true;<br \/>\nspinner.startSpinner();<br \/>\n\/\/set up listeners for load complete or error, go to changeTilesBeforeCollapse on complete<br \/>\nloader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadComplete);<br \/>\nloader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,loadingError);<br \/>\n\/\/load image<br \/>\nloader.load(new URLRequest(largePicURLs[currentPicIndex + pageShift]));<br \/>\n}<br \/>\nfunction setFlipVisibility():void {<br \/>\nbtnPrevImage.visible = btnPrevImage.mouseEnabled = (currentPicIndex + pageShift &gt; 0);<br \/>\nbtnNextImage.visible = btnNextImage.mouseEnabled = (currentPicIndex + pageShift &lt; (numPics &#8211; 1));<br \/>\n}<br \/>\nfunction loadingError(e:IOErrorEvent):void {<br \/>\ninfoBox.text=&#8221;There has been an error loading the image. The server may be busy. Refresh the page and try again.&#8221;;<br \/>\nloader.contentLoaderInfo.removeEventListener(Event.COMPLETE,loadComplete);<br \/>\nloader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,loadingError);<br \/>\nisLoading=false;<br \/>\nspinner.stopSpinner();<br \/>\nspinner.visible=false;<br \/>\n}<br \/>\nfunction onPicClick(evt:MouseEvent):void {<br \/>\nbtnReturn.removeEventListener(MouseEvent.CLICK, returnToThumbs);<br \/>\ngalleryHolder.removeEventListener(MouseEvent.CLICK, onPicClick);<br \/>\nseparate();<br \/>\n}<br \/>\nfunction returnToThumbs(evt:MouseEvent):void {<br \/>\ngalleryHolder.removeEventListener(MouseEvent.CLICK, onPicClick);<br \/>\nbtnReturn.removeEventListener(MouseEvent.CLICK, returnToThumbs);<br \/>\nbtnReturn.mouseEnabled = false;<br \/>\nseparate();<br \/>\n}<br \/>\nfunction loadComplete(evt:Event):void {<br \/>\nloader.contentLoaderInfo.removeEventListener(Event.COMPLETE,loadComplete);<br \/>\nloader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,loadingError);<br \/>\nspinner.stopSpinner();<br \/>\nspinner.visible=false;<br \/>\nisLoading=false;<br \/>\n\/\/paint tiles with pic:<br \/>\nvar matrix:Matrix = new Matrix(1,0,0,1);<br \/>\nvar index:int;<br \/>\nvar bd:BitmapData = Bitmap(loader.content).bitmapData;<br \/>\nfor (var i=0; i&lt;= divisions-1; i++) {<br \/>\nfor (var j=0; j&lt;= divisions-1; j++) {<br \/>\nindex = i*divisions + j;<br \/>\nmatrix.tx = (-j-0.5)*picWidth\/divisions;<br \/>\nmatrix.ty = (-i-0.5)*picHeight\/divisions;<br \/>\ntiles[index].graphics.clear();<br \/>\ntiles[index].graphics.beginBitmapFill(bd,matrix,false,false);<br \/>\ntiles[index].graphics.drawRect(-tileWidth\/2, -tileHeight\/2, tileWidth, tileHeight);<br \/>\ntiles[index].graphics.endFill();<br \/>\n}<br \/>\n}<br \/>\n\/\/change caption:<br \/>\ncaptionBox.text = &#8221;\u00a0 &#8220;+captions[currentPicIndex + pageShift]+&#8221;\u00a0 &#8220;; \/\/adding a little extra space to avoid cutoff<br \/>\nif (!collapsed) {<br \/>\ncollapse();<br \/>\n}<br \/>\n}<br \/>\nfunction collapse():void {<br \/>\ncollapsed = true;<br \/>\n\/\/reset the randomization variables so it won&#8217;t look the same every time:<br \/>\nfor (var i:int = 0; i &lt; divisions*divisions; i++) {<br \/>\nvariationX[i] = (4*variationMax*(2*Math.random()-1));<br \/>\nvariationY[i] = (4*variationMax*(2*Math.random()-1));<br \/>\nangles[i] = 60-Math.random()*120;<br \/>\n}<br \/>\nparameterTween = new Tween(paramObject,&#8221;t&#8221;,Elastic.easeInOut,0,1,collapseTweenDuration);<br \/>\nparameterTween.addEventListener(TweenEvent.MOTION_FINISH, collapseComplete);<br \/>\nthis.addEventListener(Event.ENTER_FRAME, onEnterCollapse);<br \/>\n}<br \/>\nfunction separate():void {<br \/>\ncollapsed = false;<br \/>\n\/\/reset the randomization variables so it won&#8217;t look the same every time:<br \/>\nfor (var i:int = 0; i &lt; divisions*divisions; i++) {<br \/>\nvariationX[i] = (4*variationMax*(2*Math.random()-1));<br \/>\nvariationY[i] = (4*variationMax*(2*Math.random()-1));<br \/>\nangles[i] = 60-Math.random()*120;<br \/>\n}<br \/>\nparameterTween = new Tween(paramObject,&#8221;t&#8221;,Elastic.easeInOut,0,1,separateTweenDuration);<br \/>\nparameterTween.addEventListener(TweenEvent.MOTION_FINISH, separateComplete);<br \/>\nthis.adEventListener(Event.ENTER_FRAME, onEnterSeparate);<br \/>\nbtnPrevImage.mouseEnabled = false;<br \/>\nbtnNextImage.mouseEnabled = false;<br \/>\n}<br \/>\nfunction onEnterCollapse(evt:Event):void {<br \/>\ncaptionBox.alpha = paramObject.t;<br \/>\nnavigationPanel.alpha = paramObject.t;<br \/>\nmcViewInstructions.alpha = 1 &#8211; paramObject.t;<br \/>\nbtnPrevPage.alpha = 1 &#8211; paramObject.t;<br \/>\nbtnNextPage.alpha = 1 &#8211; paramObject.t;<br \/>\nvar quad:Number;<br \/>\nfor (var i:int = 0; i&lt; divisions*divisions; i++) {<br \/>\nquad = paramObject.t*(1-paramObject.t);<br \/>\ntiles[i].x = tiles[i].openPosition.x + paramObject.t*(tiles[i].closedPosition.x-tiles[i].openPosition.x)+variationX[i]*quad;<br \/>\ntiles[i].y = tiles[i].openPosition.y + paramObject.t*(tiles[i].closedPosition.y-tiles[i].openPosition.y)+variationY[i]*quad;<br \/>\ntiles[i].thumbnailHolder.alpha = 1-paramObject.t;<br \/>\ntiles[i].rotation = quad*angles[i];<br \/>\n}<br \/>\n}<br \/>\nfunction onEnterSeparate(evt:Event):void {<br \/>\ncaptionBox.alpha = 1-paramObject.t;<br \/>\nnavigationPanel.alpha = 1-paramObject.t;<br \/>\nmcViewInstructions.alpha = paramObject.t;<br \/>\nbtnPrevPage.alpha = paramObject.t;<br \/>\nbtnNextPage.alpha = paramObject.t;<br \/>\nvar quad:Number;<br \/>\nfor (var i:int = 0; i&lt; divisions*divisions; i++) {<br \/>\nquad = paramObject.t*(1-paramObject.t);<br \/>\ntiles[i].x = tiles[i].closedPosition.x + paramObject.t*(tiles[i].openPosition.x-tiles[i].closedPosition.x)+variationX[i]*quad;<br \/>\ntiles[i].y = tiles[i].closedPosition.y + paramObject.t*(tiles[i].openPosition.y-tiles[i].closedPosition.y)+variationY[i]*quad;<br \/>\ntiles[i].thumbnailHolder.alpha = paramObject.t;<br \/>\ntiles[i].rotation = quad*angles[i];<br \/>\n}<br \/>\n}<br \/>\nfunction collapseComplete(evt:Event):void {<br \/>\ncaptionBox.x = galleryHolder.x &#8211; captionBox.width\/2;<br \/>\nthis.removeEventListener(Event.ENTER_FRAME, onEnterCollapse);<br \/>\ngalleryHolder.addEventListener(MouseEvent.CLICK, onPicClick);<br \/>\nbtnReturn.addEventListener(MouseEvent.CLICK, returnToThumbs);<br \/>\nbtnReturn.mouseEnabled = true;<br \/>\n}<br \/>\nfunction separateComplete(evt:Event):void {<br \/>\nthis.removeEventListener(Event.ENTER_FRAME, onEnterSeparate);<br \/>\n}<br \/>\nfunction prevImage(evt:MouseEvent):void {<br \/>\nif(isLoading){<br \/>\nreturn;<br \/>\n}<br \/>\nisLoading=true;<br \/>\ncurrentPicIndex -= 1;<br \/>\nif (currentPicIndex &lt; 0) {<br \/>\n\/\/pageShift -= numTiles;<br \/>\ncurrentPicIndex = numTiles &#8211; 1<br \/>\n\/\/have to do something special if we&#8217;re on the last page<br \/>\nif (Math.ceil(Number(pageShift)\/Number(numTiles)) == numPages &#8211; 1) {<br \/>\ncurrentPicIndex -= backSkip;<br \/>\n}<br \/>\nprevPage();<br \/>\n}<\/p>\n<p>setFlipVisibility();<br \/>\nspinner.visible = true;<br \/>\nspinner.startSpinner();<br \/>\n\/\/set up listeners for load complete or error, go to changeTilesBeforeCollapse on complete<br \/>\nloader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadComplete);<br \/>\nloader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,loadingError);<br \/>\n\/\/load image<br \/>\nloader.load(new URLRequest(largePicURLs[currentPicIndex + pageShift]));<br \/>\n}<br \/>\nfunction nextImage(evt:MouseEvent):void {<br \/>\nif(isLoading){<br \/>\nreturn;<br \/>\n}<br \/>\nisLoading=true;<br \/>\ncurrentPicIndex += 1;<br \/>\nif (currentPicIndex &gt; numTiles &#8211; 1) {<br \/>\n\/\/pageShift -= numTiles;<br \/>\ncurrentPicIndex = 0;<br \/>\n\/\/have to do something special if we&#8217;re on the last page<br \/>\nif (Math.ceil(Number(pageShift + numTiles)\/Number(numTiles)) == numPages &#8211; 1) {<br \/>\ncurrentPicIndex += backSkip;<br \/>\n}<br \/>\nnextPage();<br \/>\n}<br \/>\nsetFlipVisibility();<br \/>\nspinner.visible = true;<br \/>\nspinner.startSpinner();<br \/>\n\/\/set up listeners for load complete or error, go to changeTilesBeforeCollapse on complete<br \/>\nloader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadComplete);<br \/>\nloader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,loadingError);<br \/>\n\/\/load image<br \/>\nloader.load(new URLRequest(largePicURLs[currentPicIndex + pageShift]));<br \/>\n}<br \/>\nfunction setPagingVisibility():void {<br \/>\nbtnPrevPage.visible = false;<br \/>\nbtnPrevPage.mouseEnabled = false;<br \/>\nbtnNextPage.visible = false;<br \/>\nbtnNextPage.mouseEnabled = false;<br \/>\nif (pageShift + numTiles &lt; numPics &#8211; 1) {<br \/>\nbtnNextPage.visible = true;<br \/>\nbtnNextPage.mouseEnabled = true;<br \/>\n}<br \/>\nif (pageShift &gt; 0) {<br \/>\nbtnPrevPage.visible = true;<br \/>\nbtnPrevPage.mouseEnabled = true;<br \/>\n}<br \/>\n}<br \/>\nfunction btnNextPageHandler(evt:MouseEvent):void {<br \/>\nnextPage();<br \/>\n}<br \/>\nfunction btnPrevPageHandler(evt:MouseEvent):void {<br \/>\nprevPage();<br \/>\n}<br \/>\nfunction nextPage():void {<br \/>\nvar k:int;<br \/>\npageShift += numTiles;<br \/>\nif (pageShift + numTiles &gt; numPics) {<br \/>\npageShift = numPics &#8211; numTiles;<br \/>\n}<br \/>\nfor (k = 0; k &lt; numTiles; k++) {<br \/>\nif (tiles[k].thumbnailHolder.numChildren &gt; 0) {<br \/>\ntiles[k].thumbnailHolder.removeChildAt(0);<br \/>\n}<br \/>\ntiles[k].thumbnailHolder.addChild(thumbnails[k + pageShift]);<br \/>\n}<br \/>\nsetPagingVisibility();<br \/>\n}<br \/>\nfunction prevPage():void {<br \/>\nvar k:int;<br \/>\npageShift -= numTiles;<br \/>\nif (pageShift &lt; 0) {<br \/>\npageShift = 0;<br \/>\n}<br \/>\nfor (k = 0; k &lt; numTiles; k++) {<br \/>\nif (tiles[k].thumbnailHolder.numChildren &gt; 0) {<br \/>\ntiles[k].thumbnailHolder.removeChildAt(0);<br \/>\n}<br \/>\ntiles[k].thumbnailHolder.addChild(thumbnails[k + pageShift]);<br \/>\n}<br \/>\nsetPagingVisibility();<br \/>\n}<\/p>\n<p>Step 4: Create one folder in the name of gallery, inside of it create two folders in the name of asfiles and pictures. Inside of asfiles folder create ascript folder, and inside of it create three folders in the name of loader, object, and preloader. The folders chart is given below for reference:<\/p>\n<p><a name=\"imageclose-607\"><div class=\"lb-album\"><a href=\"#image-607\"><img src=\"http:\/\/www.searchenginegenie.com\/web-design-blog\/wp-content\/uploads\/2011\/03\/chart1.jpg\"  class=\"aligncenter size-full wp-image-683\"><span><\/span><\/a><\/div>              \r\n<a href=\"#imageclose-607\" class=\"css3lightbox-close\">\r\n\t\t\t\t   <div class=\"lb-overlay\" id=\"image-607\">\r\n                   <img src=\"http:\/\/www.searchenginegenie.com\/web-design-blog\/wp-content\/uploads\/2011\/03\/chart1.jpg\" alt=\"image-607\">\r\n                   <\/div><\/a><\/p>\n<p>Step 5: Create images in the size of 400X300 and also make the copy of images in thumbnail size inside the pictures folder. Here I have taken 30 images for gallery.<\/p>\n<p>Step-6: Now have open four actionscript file in the name of LoadSpinner2, Tile, GalleryLoader, ThumbsLoader. Save GalleryLoader, ThumbsLoader in loader folder, and Tile in object and LoadSpinner2 in preloader folder.<\/p>\n<p>Write the following code in LoadSpinner2.as file:<\/p>\n<p>package asfiles.ascript.preloaders {<br \/>\nimport flash.display.Sprite;<br \/>\nimport flash.display.Shape;<br \/>\nimport flash.events.Event;<br \/>\nimport flash.geom.Rectangle;<br \/>\nimport flash.filters.BlurFilter;<br \/>\npublic class LoadSpinner2 extends Sprite {<br \/>\nprivate var back:Shape;<br \/>\nprivate var spinner:Shape;<br \/>\nprivate var rectWidth:Number;<br \/>\nprivate var rectHeight:Number;<br \/>\nprivate var sticks:Vector.&lt;Shape&gt;;<br \/>\nprivate var numSticks:int;<br \/>\nprivate var count:int;<br \/>\nprivate var dimColor:uint;<br \/>\nprivate var brightColor:uint;<br \/>\nprivate var colors:Vector.&lt;uint&gt;;<br \/>\nprivate var alphas:Vector.&lt;Number&gt;;<br \/>\nprivate var sticksHolder:Sprite;<br \/>\nprivate var _bgAlpha:Number;<br \/>\npublic function LoadSpinner2(w:Number,h:Number) {<br \/>\nrectWidth=w;<br \/>\nrectHeight=h;<br \/>\nnumSticks=12;<br \/>\ncount=0;<br \/>\n_bgAlpha = 0.1;<br \/>\nsticks= new Vector.&lt;Shape&gt;(numSticks);<br \/>\nsticksHolder = new Sprite();<br \/>\nthis.addChild(sticksHolder);<br \/>\nsticksHolder.x=0;<br \/>\nsticksHolder.y=0;<br \/>\nvar i:int;<br \/>\nfor(i=0;i&lt;numSticks;i++){<br \/>\nsticks[i]=new Shape();<br \/>\nsticksHolder.addChild(sticks[i]);<br \/>\nsticks[i].x=0;<br \/>\nsticks[i].y=0;<br \/>\n}<br \/>\nsetColors(0x0088DDFF, 0xFF88DDFF);<br \/>\ndrawBack();<br \/>\n}<br \/>\npublic function set bgAlpha(n:Number):void {<br \/>\n_bgAlpha = n;<br \/>\ndrawBack();<br \/>\n}<br \/>\npublic function setColors(color1:uint, color2:uint):void {<br \/>\nvar a1:uint = (color1 &gt;&gt; 24) &amp; 0xFF;<br \/>\nvar r1:uint = (color1 &gt;&gt; 16) &amp; 0xFF;<br \/>\nvar g1:uint = (color1 &gt;&gt; 8 ) &amp; 0xFF;<br \/>\nvar b1:uint = color1 &amp; 0xFF;<br \/>\nvar a2:uint = (color2 &gt;&gt; 24) &amp; 0xFF;<br \/>\nvar r2:uint = (color2 &gt;&gt; 16) &amp; 0xFF;<br \/>\nvar g2:uint = (color2 &gt;&gt; 8 ) &amp; 0xFF;<br \/>\nvar b2:uint = color2 &amp; 0xFF;<br \/>\nvar a,r,g,b:Number;<br \/>\ncolors = new Vector.&lt;uint&gt;(numSticks);<br \/>\nalphas = new Vector.&lt;Number&gt;(numSticks);<br \/>\nvar i:Number;<br \/>\nvar t:Number;<br \/>\nfor (i = 0; i &lt; numSticks; i++) {<br \/>\nt = i\/(numSticks-1);<br \/>\nt = t*t;<br \/>\na = a1 + t*(a2-a1);<br \/>\nr = r1 + t*(r2-r1);<br \/>\ng = g1 + t*(g2-g1);<br \/>\nb = b1 + t*(b2-b1);<br \/>\ncolors[i] = (r &lt;&lt; 16) | (g &lt;&lt; 8 ) | b;<br \/>\nalphas[i] = Number(a)\/255;<br \/>\n}<br \/>\ndrawSpinner(count);<br \/>\n}<br \/>\nprivate function drawBack():void {<br \/>\nthis.graphics.clear();<br \/>\nthis.graphics.lineStyle(2,0xFFFFFF,_bgAlpha);<br \/>\nthis.graphics.beginFill(0xFFFFFF,_bgAlpha);<br \/>\nthis.graphics.drawRoundRect(-rectWidth\/2,-rectHeight\/2,rectWidth,rectHeight,10,10);<br \/>\nthis.graphics.endFill();<br \/>\n}<br \/>\nprivate function drawSpinner(k:int):void {<br \/>\nvar minRad:Number=10;<br \/>\nvar maxRad:Number=25;<br \/>\nvar ang=Math.PI*2\/numSticks;<br \/>\nvar i:Number;<br \/>\nvar t:Number;<br \/>\nfor(i=0;i&lt;numSticks;i++){<br \/>\nt = i\/(numSticks-1);<br \/>\nt = t*t;<br \/>\nsticks[i].graphics.clear();<br \/>\nsticks[i].graphics.lineStyle(4,colors[i],alphas[i],false,&#8221;normal&#8221;,&#8221;round&#8221;);<br \/>\nsticks[i].graphics.moveTo(minRad*Math.cos(i*ang),minRad*Math.sin(i*ang));<br \/>\nsticks[i].graphics.lineTo(maxRad*Math.cos(i*ang),maxRad*Math.sin(i*ang));<br \/>\n}<br \/>\n}<br \/>\npublic function stopSpinner():void {<br \/>\nthis.removeEventListener(Event.ENTER_FRAME,doSpin);<br \/>\ncount=0;<br \/>\n}<br \/>\npublic function startSpinner():void {<br \/>\nthis.addEventListener(Event.ENTER_FRAME,doSpin);<br \/>\n}<br \/>\nprivate function doSpin(e:Event):void {<br \/>\ncount+=1;<br \/>\ncount=count%numSticks;<br \/>\nsticksHolder.rotation = 360*count\/numSticks;<br \/>\n}}}<br \/>\nWrite the following code in Tile.as:<br \/>\npackage asfiles.ascript.objects {<br \/>\nimport flash.display.Sprite;<br \/>\nimport flash.geom.Point;<\/p>\n<p>public class Tile extends Sprite {<br \/>\npublic var which:Number;<br \/>\npublic var openPosition:Point;<br \/>\npublic var closedPosition:Point;<br \/>\npublic var color:uint;<br \/>\npublic var thumbnailHolder:Sprite;<br \/>\npublic function Tile() {<br \/>\nopenPosition = new Point();<br \/>\nclosedPosition = new Point();<br \/>\nthumbnailHolder = new Sprite();<br \/>\nthumbnailHolder.mouseEnabled = false;<br \/>\nthis.addChild(thumbnailHolder);<br \/>\n}}}<br \/>\nWrite the following code GalleryLoader.as:<br \/>\npackage asfiles.ascript.loaders {<br \/>\nimport flash.display.Loader;<br \/>\nimport flash.display.BitmapData;<br \/>\nimport flash.display.Bitmap;<br \/>\nimport flash.events.EventDispatcher;<br \/>\nimport flash.events.Event;<br \/>\nimport flash.events.IOErrorEvent;<br \/>\nimport flash.net.URLRequest;<br \/>\nimport flash.net.URLLoader;<br \/>\npublic class GalleryLoader extends EventDispatcher {<br \/>\npublic static const ALL_LOADED:String = &#8220;allLoaded&#8221;;<br \/>\npublic static const XMLLOAD_ERROR:String = &#8220;xmlLoadError&#8221;;<br \/>\npublic static const IMGSLOAD_ERROR:String = &#8220;imgsLoadError&#8221;;<br \/>\nprivate var xmlRequest:URLRequest;<br \/>\nprivate var xmlLoader:URLLoader;<br \/>\nprivate var xmlContent:XML;<br \/>\nprivate var _numPics:int;<br \/>\nprivate var isError:Boolean;<br \/>\nprivate var _bmpDataVec:Vector.&lt;BitmapData&gt;;<br \/>\nprivate var _capsVec:Vector.&lt;String&gt;;<br \/>\nprivate var _picsVec:Vector.&lt;String&gt;;<br \/>\nprivate var thumbsToLoad:Array;<br \/>\nprivate var thumbsLoader:ThumbsLoader;<br \/>\npublic function GalleryLoader(xml:String){<br \/>\nxmlRequest=new URLRequest(xml);<br \/>\n}<br \/>\npublic function loadXML():void {<br \/>\nxmlLoader=new URLLoader();<br \/>\nxmlLoader.addEventListener(Event.COMPLETE, xmlLoadComplete);<br \/>\nxmlLoader.addEventListener(IOErrorEvent.IO_ERROR, xmlError);<br \/>\nxmlLoader.load(xmlRequest);<br \/>\n}<br \/>\nprivate function xmlLoadComplete(e:Event):void {<br \/>\nxmlContent = new XML(xmlLoader.data);<br \/>\nxmlLoader.removeEventListener(Event.COMPLETE, xmlLoadComplete);<br \/>\nxmlLoader.removeEventListener(IOErrorEvent.IO_ERROR, xmlError);<br \/>\nprocXML();<br \/>\n}<br \/>\nprivate function procXML():void {<br \/>\nvar j:int;<br \/>\n_numPics=xmlContent.tile.length();<br \/>\nthumbsToLoad=[];<br \/>\n_bmpDataVec=new Vector.&lt;BitmapData&gt;(_numPics);<br \/>\n_picsVec=new Vector.&lt;String&gt;(_numPics);<br \/>\n_capsVec=new Vector.&lt;String&gt;(_numPics);<br \/>\nfor(j=0;j&lt;_numPics;j++){<\/p>\n<p>thumbsToLoad.push(xmlContent.tile[j].thumb.toString());<br \/>\n_picsVec[j]=xmlContent.tile[j].pic.toString();<br \/>\n_capsVec[j]=xmlContent.tile[j].cap.toString();<br \/>\n}<br \/>\nthumbsLoader=new ThumbsLoader();<br \/>\nthumbsLoader.addEventListener(ThumbsLoader.IMGS_LOADED,imgsDone);<br \/>\nthumbsLoader.addEventListener(ThumbsLoader.LOAD_ERROR,imgsError);<br \/>\nthumbsLoader.loadImgs(thumbsToLoad);<br \/>\n}<br \/>\nprivate function imgsError(e:Event):void {<br \/>\ndispatchEvent(new Event(GalleryLoader.IMGSLOAD_ERROR));<br \/>\n}<br \/>\nprivate function imgsDone(e:Event):void {<br \/>\nvar j:int;<br \/>\nthumbsLoader.removeEventListener(ThumbsLoader.IMGS_LOADED,imgsDone);<br \/>\nthumbsLoader.removeEventListener(ThumbsLoader.LOAD_ERROR,imgsError);<br \/>\nfor(j=0;j&lt;_numPics;j++){<br \/>\n_bmpDataVec[j]=thumbsLoader.bitmapsArray[j].clone();<br \/>\nthumbsLoader.bitmapsArray[j].dispose();<br \/>\n}<br \/>\ndispatchEvent(new Event(GalleryLoader.ALL_LOADED));<br \/>\n}<br \/>\nprivate function xmlError(e:IOErrorEvent):void {<br \/>\ndispatchEvent(new Event(GalleryLoader.XMLLOAD_ERROR));<br \/>\n}<br \/>\npublic function get bmpDataVec():Vector.&lt;BitmapData&gt; {<br \/>\nreturn _bmpDataVec;<br \/>\n}<br \/>\npublic function get picsVec():Vector.&lt;String&gt; {<br \/>\nreturn _picsVec;<br \/>\n}<br \/>\npublic function get capsVec():Vector.&lt;String&gt; {<br \/>\nreturn _capsVec;<br \/>\n}<br \/>\npublic function get numPics():int {<br \/>\nreturn _numPics;<br \/>\n}}}<\/p>\n<p>Write the following code in ThumbLoader.as file:<\/p>\n<p>package com.ascript.loaders {<br \/>\nimport flash.display.Loader;<br \/>\nimport flash.display.Bitmap;<br \/>\nimport flash.display.BitmapData;<br \/>\nimport flash.events.Event;<br \/>\nimport flash.events.EventDispatcher;<br \/>\nimport flash.events.IOErrorEvent;<br \/>\nimport flash.net.URLRequest;<br \/>\npublic\u00a0 class ThumbsLoader extends EventDispatcher {<br \/>\npublic static const IMGS_LOADED:String = &#8220;imgsLoaded&#8221;;<br \/>\npublic static const LOAD_ERROR:String = &#8220;loadError&#8221;;<br \/>\nprivate var loadersArray:Array;<br \/>\nprivate var numImgs:int;<br \/>\nprivate var numLoaded:int;<br \/>\nprivate var isError:Boolean;<br \/>\nprivate var _bitmapsArray:Array;<br \/>\nprivate var loadCanRun:Boolean;<br \/>\npublic function ThumbsLoader(){<br \/>\nthis.loadCanRun=true;<br \/>\n}<br \/>\npublic function loadImgs(imgsFiles:Array):void {<br \/>\nif(loadCanRun){<br \/>\nloadCanRun=false;<br \/>\nnumLoaded=0;<br \/>\nisError=false;<br \/>\nnumImgs=imgsFiles.length;<br \/>\n_bitmapsArray=[];<br \/>\nloadersArray=[];<br \/>\nfor(var i:int=0;i&lt;numImgs;i++){<br \/>\nloadersArray[i]=new Loader();<br \/>\nloadersArray[i].contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded);<\/p>\n<p>loadersArray[i].contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorOccured);<br \/>\nloadersArray[i].load(new URLRequest(imgsFiles[i]));<br \/>\n}<br \/>\n}<br \/>\n}<br \/>\nprivate function imgLoaded(e:Event):void {<br \/>\nnumLoaded+=1;<br \/>\ncheckLoadStatus();<br \/>\n}<br \/>\nprivate function errorOccured(e:IOErrorEvent):void {<br \/>\nisError=true;<br \/>\ndispatchEvent(new Event(ThumbsLoader.LOAD_ERROR));<br \/>\n}<br \/>\nprivate function checkLoadStatus():void {<br \/>\nvar i:int;<br \/>\nif(numLoaded==numImgs &amp;&amp; isError==false){<br \/>\nfor(i=0;i&lt;numImgs;i++){<br \/>\n_bitmapsArray[i]=Bitmap(loadersArray[i].content).bitmapData;<br \/>\n}<br \/>\nfor(i=0;i&lt;numImgs;i++){ \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0 \u00a0\u00a0\u00a0 \u00a0loadersArray[i].contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, errorOccured);<br \/>\nloadersArray[i].contentLoaderInfo.removeEventListener(Event.COMPLETE, imgLoaded);<br \/>\nloadersArray[i]=null;<br \/>\n}<\/p>\n<p>loadersArray=[];<br \/>\nloadCanRun=true;<br \/>\ndispatchEvent(new Event(ThumbsLoader.IMGS_LOADED));<br \/>\n}<br \/>\n}<br \/>\npublic function get bitmapsArray():Array {<br \/>\nreturn _bitmapsArray;<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>Step 7: Open a xml file, save it as gallery and write the following code:<\/p>\n<p>&lt;gallery&gt;<br \/>\n&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image1_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image1.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Natural Beauty&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;<br \/>\n&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image2_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image2.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Seashore in the dusk&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;<br \/>\n&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image3_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image3.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Seashore&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;<br \/>\n&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image4_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image4.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Green way&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;<br \/>\n&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image5_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image5.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Grass Bed&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image6_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image6.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Umbrella Tree&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image7_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image7.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Moon at night&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image8_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image8.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;winter sun&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image9_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image9.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Mountain&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image10_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image10.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Root House&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image11_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image11.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Amazing House&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image12_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image12.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Spring&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image13_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image13.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Sea Rock&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image14_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image14.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Mountain View&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image15_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image15.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Blue Sea&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image16_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image16.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Desert&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image17_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image17.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Thunder&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image18_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image18.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Greeny Island&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image19_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image19.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Squirrel&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image20_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image20.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Mountain House&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;<br \/>\n&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image21_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image21.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Sea heart&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image22_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image22.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Mountain&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;<br \/>\n&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image23_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image23.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Sunset&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image24_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image24.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Lavender Flower&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image25_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image25.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Village Life&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image26_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image26.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Grass Tree&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image27_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image27.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Golden Grass&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image28_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image28.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Evening Sky&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image29_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image29.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Cloud Formation&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image30_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image30.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Bacterial Flower&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;&lt;tile&gt;<br \/>\n&lt;thumb&gt;Pictures\/Image31_thumbnail.jpg&lt;\/thumb&gt;<br \/>\n&lt;pic&gt;Pictures\/Image31.jpg&lt;\/pic&gt;<br \/>\n&lt;cap&gt;Rainbow Sky&lt;\/cap&gt;<br \/>\n&lt;\/tile&gt;<br \/>\n&lt;\/gallery&gt;<\/p>\n<p>Now run the program.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Step 1: Open a new a document in flash Actionscript 3.0 in the size of 525X450 PX. Step 2: Set up the BG color as black or needed color. Step 3: Paste the following code in Layer-1, first Keyframe by giving F9 to open the actionacript panel: import fl.transitions.*; import fl.transitions.easing.*; import flash.display.Bitmap; import flash.display.BitmapData; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[39,38],"class_list":["post-606","post","type-post","status-publish","format-standard","hentry","category-flash","tag-flash-action-script","tag-flash-vibrating-gallery"],"_links":{"self":[{"href":"https:\/\/www.searchenginegenie.com\/web-design-blog\/wp-json\/wp\/v2\/posts\/606","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.searchenginegenie.com\/web-design-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.searchenginegenie.com\/web-design-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.searchenginegenie.com\/web-design-blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.searchenginegenie.com\/web-design-blog\/wp-json\/wp\/v2\/comments?post=606"}],"version-history":[{"count":50,"href":"https:\/\/www.searchenginegenie.com\/web-design-blog\/wp-json\/wp\/v2\/posts\/606\/revisions"}],"predecessor-version":[{"id":733,"href":"https:\/\/www.searchenginegenie.com\/web-design-blog\/wp-json\/wp\/v2\/posts\/606\/revisions\/733"}],"wp:attachment":[{"href":"https:\/\/www.searchenginegenie.com\/web-design-blog\/wp-json\/wp\/v2\/media?parent=606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.searchenginegenie.com\/web-design-blog\/wp-json\/wp\/v2\/categories?post=606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.searchenginegenie.com\/web-design-blog\/wp-json\/wp\/v2\/tags?post=606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}