2016-09-30 16 views
0

我有困難使用customlistrenderer類和主屏幕類。你如何製作具有特定長度的按鈕?

這是我的Homescreen類,其中包含函數generateData(),該函數應該顯示22個按鈕的滾動條。

private function generateData(): void{ 

     var list: List = new List(); 
     list.width = 235; 
     list.height = 380; 
     list.name = "HomeScreenList"; 
     this.addChild(list); 

     var rows:int = 6; 
     var iterator:int = 0; 
     var num:int = 22; 
     var counter:int = 0; 
     var obj:Object; 
     var heroName:Array = ["ana", "bastion", "d.va", "genji", "hanzo", "junkrat", "lucio", 
     "mccree", "mei", "mercy", "pharah", "reaper", "reinhardt", "roadhog", "soldier76", "symmetra", 
     "torbjorn", "tracer", "widowmaker", "winston", "zarya", "zenyatta"]; 
     var temp:Array = [] 

     obj = new Object(); 
     while(iterator < rows){ 

     obj.name1 = heroName[counter]; 
     obj.image1 = myResource.getImage(heroName[counter]); 
     obj.name2 = heroName[counter+1]; 
     obj.image2 = myResource.getImage(heroName[counter+1]); 
     obj.name3 = heroName[counter+2]; 
     obj.image3 = myResource.getImage(heroName[counter+2]); 
     obj.name4 = heroName[counter+3]; 
     obj.image4 = myResource.getImage(heroName[counter+3]); 
     temp.push(obj); 
     counter+4; 
     iterator++; 
     } 

     var collection:ListCollection = new ListCollection(temp); 

     //assign the renderer 
     list.itemRendererType = CustomMenuListRenderer; 
     list.dataProvider = collection; 
     list.addEventListener(Event.CHANGE, onChange); 

     this.addChild(list); 
     list.validate(); 


    } 

和CustomMenuListRenderer類,初始化()函數下

super.initialize(); 
     firstButton = new Button(); 
     this.addChild(firstButton); 
     firstButton.x = 20; 
     firstButton.y = 100; 
     firstButton.scale = 0.60; 
     secondButton = new Button(); 
     secondButton.x = 92; 
     secondButton.y = 100; 
     secondButton.scale = 0.60; 
     thirdButton = new Button(); 
     thirdButton.x = 163; 
     thirdButton.y = 100; 
     thirdButton.scale = 0.60; 
     fourthButton = new Button(); 
     fourthButton.x = 235; 
     fourthButton.y = 100; 
     fourthButton.scale = 0.60; 

     firstButton.addEventListener(Event.TRIGGERED, onTrigger); 
     secondButton.addEventListener(Event.TRIGGERED, onTrigger); 
     thirdButton.addEventListener(Event.TRIGGERED, onTrigger); 
     fourthButton.addEventListener(Event.TRIGGERED, onTrigger); 

問題是由於循環顯示4個按鈕的每個循環,在第23屆按鈕出現錯誤(因爲我僅指定22個按鈕,但我在CustomMenuListRenderer類中聲明瞭4個按鈕)。

我的問題是我該如何解決這個問題?

回答

0

第一個問題,爲什麼手動定義num而不使用heroName.lenght?更安全

var heroName:Array = ["ana", "bastion", "d.va", "genji", "hanzo", "junkrat", "lucio", 
    "mccree", "mei", "mercy", "pharah", "reaper", "reinhardt", "roadhog", "soldier76", "symmetra", 
    "torbjorn", "tracer", "widowmaker", "winston", "zarya", "zenyatta"]; 
var num:int = heroName.lenght; 

要解決您的錯誤,您必須檢查是否存在heroName索引,才能獲取它。

喜歡的東西:

obj = new Object(); 
while(iterator < rows){ 
    var objCounter:int = 1; 
    while(objCounter <= 4) 
    { 
     if(counter < heroName.lenght) 
     { 
      obj["name"+objCounter] = heroName[counter]; 
      obj["image"+objCounter] = myResource.getImage(heroName[counter]); 

     } 
     objCounter++; 
     counter++; 
    } 
    temp.push(obj); 
    iterator++; 
} 
相關問題