Tein erään video-oppaan perusteella tälläisen:
// Dock.fla import Dock import flash.events.Event; var data:Array = new Array( { id:1, img:"kuvat/kuva1.png" }, { id:1, img:"kuvat/kuva2.png" }, { id:1, img:"kuvat/kuva3.png" }, { id:1, img:"kuvat/kuva4.png" }, { id:1, img:"kuvat/kuva5.png" }, { id:1, img:"kuvat/kuva6.png" }, { id:1, img:"kuvat/kuva7.png" }, { id:1, img:"kuvat/kuva8.png" }, { id:1, img:"kuvat/kuva9.png" } ); var dock:Dock = new Dock(data); dock.addEventListener(Event.COMPLETE, dockCompleteHandler); addChild(dock); function dockCompleteHandler(event:Event) { trace("dockCompleteHandler"); dock.removeEventListener(Event.COMPLETE, dockCompleteHandler); dock.x = stage.stageWidth*.5 - dock.width*.5; dock.y = stage.stageHeight - dock.height; }
// Dock.as package { import flash.events.Event; import flash.display.Sprite; import DockItem; import flash.geom.Point; public class Dock extends Sprite { private var _data:Array; private var _totalItems:int; private var _itemsLoader:int = 0; private var _minScale:Number = 0.45; private var _maxScale:Number = 1; private var _padding:Number = 15; private var _dockItems:Array = new Array(); public function Dock( pData:Array = null) { trace("Dock::Dock()"); _data = pData; addEventListener(Event.ADDED_TO_STAGE, _stageHandler); } //----------------------------------- // Getters & Setters //----------------------------------- public function get data():Array { return _data; trace("get data returnded " + _data); } public function set data(value:Array):void { _data = value; trace("set data setted _data = " + value); } //----------------------------------- // Event Handlers //----------------------------------- private function _enterFrameHandler(event:Event):void { trace("_enterFrameHandler"); for(var i:int = 0; i < _dockItems.length; i++) { var item:DockItem = _dockItems[i]; var scale:Number = _maxScale - _proximity( new Point(mouseX, mouseY), new Point(item.x, item.y)) / 100; if(scale < _maxScale && scale > _minScale) { item.scaleX = item.scaleY = scale; } else { item.scaleX = item.scaleY = _minScale; } } } private function _dockItemCompleteHandler(event:Event):void { trace("_dockItemCompleteHandler"); event.target.removeEventListener(Event.COMPLETE, _dockItemCompleteHandler); _itemsLoader++; trace("_itemsLoader on nyt " + _itemsLoader); if(_itemsLoader == _totalItems) { trace("_itemsLoader == _totalItems"); for(var i:int = 0; i < _dockItems.length; i++) { var item:DockItem = _dockItems[i]; item.scaleX = item.scaleY = _minScale; var prevItem = (i > 0) ? _dockItems[i-1] : _dockItems[i]; item.x = (x > 0) ? prevItem.x + prevItem.width + _padding : 0; item.visible = true; trace(i + " näkyvissä"); } dispatchEvent(event); } } private function _stageHandler(event:Event):void { trace("_stageHandler"); removeEventListener(Event.ADDED_TO_STAGE, _stageHandler); _initialize(); } //----------------------------------- // Private & Protected Methods //----------------------------------- private function _proximity( pPointA:Point, pPointB:Point ) { trace("_proxmity"); return Math.sqrt( (pPointA.x - pPointB.x)*(pPointA.x - pPointB.x) + (pPointA.y - pPointB.y)*(pPointA.y - pPointB.y) ); } private function _initIcons():void { trace("_initIcons"); _totalItems = _data.length; trace("_totalItems = _data.lenght = " + _totalItems) for(var i:int = 0; i < _totalItems; i++) { trace("for loop " + i) var id = _data[i].id; var img = _data[i].img; trace(id + " " + img) var item:DockItem = new DockItem(id, img); item.addEventListener(Event.COMPLETE, _dockItemCompleteHandler); item.visible = false; _dockItems.push(item); addChild(item); } } private function _initialize():void { trace("_initialize"); _initIcons(); addEventListener(Event.ENTER_FRAME, _enterFrameHandler); } } }
// DockItem.as package { import flash.events.Event; import flash.events.IOErrorEvent; import flash.display.Sprite; import flash.display.Loader; import flash.net.URLRequest; import flash.display.LoaderInfo; import flash.display.Bitmap; public class DockItem extends Sprite { private var _id:int; private var _imageSource:String; public function DockItem( pId:int, pImageSource:String ) { trace("DockItem()"); _id = pId; _imageSource = pImageSource; addEventListener(Event.ADDED_TO_STAGE, _stageHandler); } //----------------------------------- // Event Handlers //----------------------------------- private function _loaderCompleteHandler(event:Event):void { trace("_loaderCompleteHandler"); var loader:LoaderInfo = event.target as LoaderInfo; loader.removeEventListener(Event.COMPLETE, _loaderCompleteHandler); loader.removeEventListener(IOErrorEvent.IO_ERROR, _ioErrorHandler); var iconContainer:Sprite = new Sprite(); var icon:Bitmap = event.target.content as Bitmap; icon.smoothing = true; iconContainer.addChild(icon); iconContainer.x = - iconContainer.width*.5; iconContainer.y = - iconContainer.height*.5; addChild(iconContainer); } private function _ioErrorHandler(event:IOErrorEvent):void { trace("DockItem::_ioErrorHandler()"); var loader:LoaderInfo = event.target as LoaderInfo; loader.removeEventListener(Event.COMPLETE, _loaderCompleteHandler); loader.removeEventListener(IOErrorEvent.IO_ERROR, _ioErrorHandler); } private function _stageHandler(event:Event):void { removeEventListener(Event.ADDED_TO_STAGE, _stageHandler); _initialize(); } //----------------------------------- // Private & Protected Methods //----------------------------------- private function _loadIcons():void { trace("_loadIcons"); var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _loaderCompleteHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, _ioErrorHandler); try { loader.load( new URLRequest(_imageSource) ); } catch (e:Error) { trace(e.getStackTrace()) } } private function _initialize():void { _loadIcons(); } } }
En ymmärrä mikä tätä vaivaa. Jostain syystä kuvat eivät tule näkyviin. Mitään virheitä ei tule. Osaisiko joku tuon perusteella sanoa, mikä on ongelmana?
Lisään vielä sen verran, että tuo on siis ActionScript 3:sta, ja Dock.fla on tietenkin se päätiedosto. Siellä on layerit Tausta ja A, joista Taustasta löytyy taustakuva (Tausta layer alimmaisena) ja A:sta löytyy koodi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.