Flash AS3代码反馈

Flash AS3代码反馈,flash,actionscript-3,actionscript,feedback,Flash,Actionscript 3,Actionscript,Feedback,我刚刚开始在AS3中编写代码,如果能从专家那里得到一些反馈,那就太好了;关于我的编码风格,我做错的事情,我可以改进的事情,最佳实践,等等。。。此外,如果你有一些额外的提示或技巧,那将是伟大的 这是我的第一段AS3代码,花了我5个小时,呸: package { import flash.display.Sprite; import flash.net.URLLoader; import flash.net.URLRequest; import flash.even

我刚刚开始在AS3中编写代码,如果能从专家那里得到一些反馈,那就太好了;关于我的编码风格,我做错的事情,我可以改进的事情,最佳实践,等等。。。此外,如果你有一些额外的提示或技巧,那将是伟大的

这是我的第一段AS3代码,花了我5个小时,呸:

package {

    import flash.display.Sprite;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.events.*;
    import flash.errors.*;
    import flash.display.MovieClip;
    import gs.*;
    import flash.display.Loader;
    import net.stevensacks.preloaders.CircleSlicePreloader;

    public class FlatSelector extends MovieClip {

        var preloader:CircleSlicePreloader = new CircleSlicePreloader();
        var imageLoader:Loader = new Loader();
        var globalXML:XML;

        public function FlatSelector() {
            stage.addEventListener(Event.ENTER_FRAME, init);
            building.alpha = 0;
        }

        public function init(event:Event):void {
            stage.removeEventListener(Event.ENTER_FRAME, init);
            var loader:URLLoader = new URLLoader(); 
            loader.addEventListener(Event.COMPLETE, handleXML);
            loader.load(new URLRequest('http://localhost/boligvelger/flats.xml'));
            TweenLite.to(building, 2, {alpha:1});
            TweenLite.to(building.flat, 2, {alpha:0.5, tint:0x00FF23});
            //var myTween:TweenLite = TweenLite.to(mc, 1, {x:200});
            //var myTween:TweenLite = new TweenLite(mc, 1, {x:200});
        }

        public function handleXML(e:Event):void {
            var xml:XML = new XML(e.target.data);
            globalXML = xml;
            for (var i:Number = 0; i < xml.leiligheter.leilighet.length(); i++) {
                var flatName = xml.leiligheter.leilighet[i].navn;
                if(movieClipExists(building[flatName])) {
                    building[flatName].addEventListener(MouseEvent.MOUSE_UP, flatMouseClick);
                    building[flatName].addEventListener(MouseEvent.MOUSE_OVER, flatMouseOver);
                    building[flatName].addEventListener(MouseEvent.MOUSE_OUT, flatMouseOut);
                    building[flatName].alpha = 0;
                    TweenLite.to(building[flatName], 2, {alpha:0.5, tint:0x00FF23});
                }
            }
        }

        public function showInfoBox():void {

        }

        public function showFlat(flatName:String):void {
            trace('flatName: '+flatName);
            trace('flat shown');
            var imageURL;
            for (var i:Number = 0; i < globalXML.leiligheter.leilighet.length(); i++) {
                if(globalXML.leiligheter.leilighet[i].navn == flatName) {
                    imageURL = globalXML.leiligheter.leilighet[i].plantegning;
                }
            }
            trace(imageURL);
            loadImage(imageURL);
        }

        public function showBuilding():void {
            TweenLite.to(imageLoader, 0.5, {alpha:0, onComplete:function(){
                removeChild(imageLoader);           
            }});
        }

        public function flatMouseClick(e:MouseEvent):void {
            trace('clicked');
            TweenLite.to(building, 0.7, {alpha:0, onComplete:showFlat(e.target.name)});
            TweenLite.to(building, 2, {y:stage.stageHeight, overwrite:0});
        }

        public function flatMouseOver(e:MouseEvent):void {
            TweenLite.to(building[e.target.name], 0.5, {tint:0x62ABFF});
            building[e.target.name].buttonMode = true;
        }

        public function flatMouseOut(e:MouseEvent):void {
            TweenLite.to(building[e.target.name], 0.5, {tint:0x00FF23});
        }

        public function showPreloader():void {
            preloader.x = (stage.stageWidth-preloader.width)/2;
            preloader.y = (stage.stageHeight-preloader.height)/2;
            preloader.alpha = 0;
            addChild(preloader);
            TweenLite.to(preloader, 0.5, {alpha:1});
        }

        public function hidePreloader():void {
            TweenLite.to(preloader, 0.5, {alpha:0, onComplete:function(){
                removeChild(preloader);         
            }});
        }

        public function loadImage(url):void {
            imageLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loaderProgressStatus);
            imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
            var imageURL:URLRequest = new URLRequest(url);
            imageLoader.load(imageURL);
            showPreloader(); 
            function loaderProgressStatus(e:ProgressEvent) {  
                //trace(e.bytesLoaded, e.bytesTotal); 
            }
            function loaderComplete(e:Event) {
                hidePreloader();
                imageLoader.alpha = 0;
                imageLoader.y = (stage.stageHeight-imageLoader.height)/2;
                addChild(imageLoader);
                TweenLite.to(imageLoader, 2, {alpha:1});
            }
        }

        public function movieClipExists(mc:MovieClip):Boolean {
            return mc != null && contains(mc);
        }




    }

}
包{
导入flash.display.Sprite;
导入flash.net.urloader;
导入flash.net.URLRequest;
导入flash.events.*;
导入flash.errors.*;
导入flash.display.MovieClip;
进口gs.*;
导入flash.display.Loader;
导入net.stevensack.preload.circleSlicesPreload;
公共类FlatSelector扩展了MovieClip{
var preload:CircleSlicePreload=新的CircleSlicePreload();
var imageLoader:Loader=new Loader();
var-globalXML:XML;
公共函数选择器(){
stage.addEventListener(Event.ENTER_FRAME,init);
b.alpha=0;
}
公共函数初始化(事件:事件):无效{
stage.removeEventListener(Event.ENTER_FRAME,init);
变量加载器:URLLoader=新的URLLoader();
loader.addEventListener(Event.COMPLETE,handleXML);
loader.load(新的URL请求('http://localhost/boligvelger/flats.xml'));
TweenLite.to(2号楼,{alpha:1});
TweenLite.to(建筑平面,2,{alpha:0.5,色调:0x00FF23});
//var myTween:TweenLite=TweenLite.to(mc,1,{x:200});
//var myTween:TweenLite=新TweenLite(mc,1,{x:200});
}
公共函数handleXML(e:事件):无效{
var xml:xml=新的xml(e.target.data);
globalXML=xml;
for(变量i:Number=0;i
今年夏天,我编写了一个graph类,用于在AS3中创建折线图。基于这种经验,我可以说您的代码相当不错,但我更喜欢在类变量和函数之前显式地编写这个关键字。因此,如果您声明一些类似的局部变量,就不会在它们之间迷失方向。

今年夏天,我编写了一个graph类,用于在AS3中创建折线图。基于这种经验,我可以说您的代码相当不错,但我更喜欢在类变量和函数之前显式地编写这个关键字。因此,如果您声明了一些类似的局部变量,您就不会在它们之间迷失方向。

需要注意的一件事是:为了避免内存泄漏,请在事件侦听器中使用弱引用。这是建议的,因为即使从 var children:XMLList = xml.leiligheter.leilighet; for each(var node:XML in children) { var flatName:String = String(node.navn); if(movieClipExists(building[flatName])) { building[flatName].addEventListener(MouseEvent.MOUSE_UP, flatMouseClick); building[flatName].addEventListener(MouseEvent.MOUSE_OVER, flatMouseOver); building[flatName].addEventListener(MouseEvent.MOUSE_OUT, flatMouseOut); building[flatName].alpha = 0; TweenLite.to(building[flatName], 2, {alpha:0.5, tint:0x00FF23}); } }
import flash.events.*;