2011-02-27 7 views
8

좋아,이 문제는 내 마음이 우스꽝 스럽다. 나는 이것이 쉬운 문제처럼 보일지도 모른다는 것을 안다. 나는 왜 그것을 이해할 수 없는지 이해할 수 없다.하지만 나는 그럴 수 없다. 그리고 나는 포기했다. 여기에 문제가 있습니다 :AS3 스프라이트 컨테이너의 너비와 높이 설정

나는 비디오에 미리보기 이미지를 묶어두기로되어있는 스프라이트 컨테이너를 가지고 있습니다. 나는 모든 비디오와 전체 작품으로 컨테이너를 채울 수 있지만 분명히 플래시 문서의 크기를 초과하는 동영상을 추가하는 경우 분명히 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로 변환되는 폭과 높이를 설정합니다. 빈 스프라이트에서는 변환 행렬이 엉망이되어 스프라이트가 나타나지 않습니다. 비어 있지 않은 스프라이트에만 width, height 또는 scaleX/Y를 설정하십시오.

+0

나는 이것에 관해 하나의 스레드를 발견했는데, 당신이 언급 한 바에 따르면 엄지 손톱으로 채워진 후에 높이와 너비를 설정하려고했는데 같은 결과가 나왔습니다. 그냥 내가 뭘했는지 알기 때문에 callThumbs() 프로 시저 뒤에 함수의 너비와 높이를 넣고이 함수를 호출했습니다. –

+0

알다시피, callThumbs는로드 만 시작하고 즉시 완료되지 않습니다. thumbLoaded() 후에 엄지의 크기를 안전하게 조절할 수 있습니다. – alxx