Astra TabBar сложности во Flash AS3 - PullRequest
0 голосов
/ 24 октября 2011

Мне трудно заставить Astra TabBar делать что-либо, кроме возможности передать мой массив DataProvider.Я пытаюсь заставить его просто отследить «щелчок» с помощью события CHANGE при нажатии на вкладку.Ничего не происходит, и я не уверен почему.Кто-нибудь имеет опыт с этим, пожалуйста?Мой код выглядит так:

package
{
import com.yahoo.astra.fl.controls.TabBar;
import com.yahoo.astra.fl.events.TabBarEvent;
public class TabBar extends Window
{
public var tabBarGpl:TabBar;
private function displayInit():void
{
var tabBarData:Array = new Array(
"Tab one",
"Tab two",
"Tab three",
"Tab four"
);
var tabBarGpl:TabBar = new TabBar();
tabBarGpl.dataProvider = new DataProvider(tabBarData);
tabBarGpl.selectedIndex = 0;
tabBarGpl.move(-230.95, -127.65);
this.addChild(tabBarGpl);
}
private function handleEvent(event:Event):void
{
var i:int;
switch (event.type)
{
case Event.ADDED_TO_STAGE :
displayInit();
removeEventListener(Event.ADDED_TO_STAGE, handleEvent);
addEventListener(Event.REMOVED_FROM_STAGE, handleEvent, false, 0, true);
this.tabBarGpl.addEventListener(Event.CHANGE, onTabBarClick);
}
}
private function onTabBArClick(event:Event):void
{
trace("tab bar clicked");
}
}
}

И ... ничего.Я вижу TabBar с моими данными на 4 вкладках, но без вывода трассировки в выводе.Любые советы будут полезны.Спасибо!

1 Ответ

0 голосов
/ 24 октября 2011

У меня нет опыта работы с Astra TabBar, но мне кажется, что вы изначально не вызывали функцию handleEvent (). Вам нужно добавить слушателя для него, когда вы создаете экземпляр своего класса. Если handleEvent () не вызывается, прослушиватель кликов никогда не добавляется, и вы не увидите клики.

public function TabBar() { //constructor function
    addEventListener(Event.ADDED_TO_STAGE, handleEvent);
}

Кроме того, я не уверен, что именно вы пытаетесь сделать, но вы, похоже, добавляете новую TabBar к каждому создаваемому вами экземпляру TabBar.

var tabBarGpl:TabBar = new TabBar();
tabBarGpl.dataProvider = new DataProvider(tabBarData);
tabBarGpl.selectedIndex = 0;
tabBarGpl.move(-230.95, -127.65);
this.addChild(tabBarGpl);

Ключевое слово "this" здесь относится к вашему экземпляру TabBar и может привести к тому, что этот класс будет бесконечно добавлять новые TabBars к существующим TabBars.

...