2011-02-27 108 views
8

好吧,我的頭腦在這個問題上令人難以置信。我知道這可能看起來像一個簡單的問題,我不明白爲什麼我不能弄清楚,但我不能和我放棄。這裏的問題:AS3設置雪碧容器的寬度和高度

我有一個精靈容器應該保存一串縮略圖視頻。我可以用所有的視頻和整個工程填充容器,但很明顯,如果我添加一堆視頻將超過Flash文檔的大小,所以我需要添加一個UIScrollBar(我這樣做)現在滾動條目標被設置爲容器,但不允許我滾動,如果我更正這是因爲容器沒有設置高度。所以我試圖設置這個容器的高度,但第二我試着設置高度,甚至寬度我所有我的縮略圖能夠看到的都消失了!就好像它的大小被設置爲0時,它甚至沒有試圖將它設置爲指定的大小隻是爲了測試而沒有。反正繼承人我的代碼,如果任何人都可以幫忙,我真的很感激它!提前致謝!


import fl.controls.UIScrollBar; 

var videoList:XMLList; 
var numVideos:Number; 
var current_Video:Number = 0; 
var video_position:Number; 
var video_paused:Boolean; 
var xmlPlaylist:String; 

//XML File setup 
var playlist_xml:XML; 
var myLoader:URLLoader = new URLLoader(); 

//Playlist setup 
var thumb_width:Number; 
var thumb_height:Number; 
var thumbs_x:Number; 
var thumbs_y:Number; 
var main_container:Sprite; 
var thumbs:Sprite; 
var scrollbar:UIScrollBar; 

//Loader Data 
this.loaderInfo.addEventListener(Event.COMPLETE, loaderComplete); 
function loaderComplete(e:Event):void 
{ 
    var myQueryStrings = this.loaderInfo.parameters; 
    xmlPlaylist = myQueryStrings.pList; 

    myLoader.load(new URLRequest(xmlPlaylist + "?uniq=" + new Date().getTime())); 
} 

myLoader.addEventListener(Event.COMPLETE, processXML); 
function processXML(e:Event):void { 
    playlist_xml = new XML(e.target.data); 

    numVideos = playlist_xml.video.length(); 
    videoList = playlist_xml.video; 

    thumb_width = [email protected]_width; 
    thumb_height = [email protected]_height; 
    thumbs_x = [email protected]_x; 
    thumbs_y = [email protected]_y; 

    current_Video = Math.round(Math.random()*(numVideos-1))+1; 
    current_Video--; 

    startPlayer(); 
} 

function startPlayer() 
{ 
    makeContainers(); 
    callThumbs(); 
    setVideo(current_Video); 
} 

function makeContainers():void 
{ 
    main_container = new Sprite(); 
    addChild(main_container); 

    thumbs = new Sprite(); 
    thumbs.addEventListener(MouseEvent.CLICK, playVideo); 
    thumbs.addEventListener(MouseEvent.MOUSE_OVER, onOver); 
    thumbs.addEventListener(MouseEvent.MOUSE_OUT, onOut); 
    thumbs.x = thumbs_x; 
    thumbs.y = thumbs_y; 

這就是問題:(如果我註釋掉的代碼會顯示縮略圖)


    thumbs.width = thumb_width; 
    thumbs.height = (thumb_height + 11) * 3; 

    thumbs.buttonMode = true; 
    main_container.addChild(thumbs); 

    scrollbar = new UIScrollBar(); 
    scrollbar.x = thumbs_x + thumb_width + 2; 
    scrollbar.y = thumbs_y; 
    scrollbar.setSize(25, (thumb_height + 11) * 3); 
    scrollbar.visible = true; 
    scrollbar.scrollTarget = thumbs; 
    main_container.addChild(scrollbar); 
} 

function callThumbs():void 
{ 
    for (var i:Number = 0; i (less than) numVideos; i++) //For some reason Stack Overflow isnt allowing me to put the symbol less than so i just typed it in... 
    { 
     var thumb_url = videoList[i][email protected]; 
     var thumb_loader = new Loader(); 
     thumb_loader.name = i; 
     thumb_loader.load(new URLRequest(thumb_url)); 

     thumb_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded); 

     thumb_loader.y = (thumb_height + 11) * i; 
    } 
} 

function thumbLoaded(e:Event):void 
{ 
    var my_thumb:Loader = Loader(e.target.loader); 
    thumbs.addChild(my_thumb); 
} 

function playVideo(e:MouseEvent):void 
{ 
    setVideo(e.target.name); 
} 

function onOver (e:MouseEvent):void 
{ 
    var my_thumb:Loader = Loader(e.target); 
    my_thumb.alpha = 0.5; 
} 

function onOut (e:MouseEvent):void 
{ 
    var my_thumb:Loader = Loader (e.target); 
    my_thumb.alpha = 1; 
} 

function setVideo(current_Video) 
{ 
    var display:String = videoList[current_Video][email protected]; 
    var video:String = videoList[current_Video][email protected]; 

    txt_Display.text = display; 
    flvPlayer.source = video; 
} 

stop(); 

回答

10

這很容易。您正在創建Sprite,添加監聽器,設置座標。精靈仍然是空的。然後你設置寬度和高度,這將轉換爲scaleX和scaleY。在空精靈上,這會擾亂轉換矩陣,精靈永遠不會出現。僅在非空精靈上設置寬度,高度或scaleX/Y。

+0

我發現一個線程關於這個和你說的話被提到,所以我也試圖設置高度和寬度後,它是填充縮略圖,我得到了同樣的結果......任何建議,爲什麼這可能是?只是讓你知道我做了什麼:我把寬度和高度放到一個函數中,並在callThumbs()過程之後調用這個函數。 – 2011-02-27 16:59:57

+0

正如我所看到的,callThumbs只是開始加載,它不會立即完成。您可以在thumbLoaded()後安全地調整大小。 – alxx 2011-02-28 07:26:08