0

スクロールバーを表示せずに、右矢印または左矢印をクリックして、tileListをスクロールできるかどうかを確認したい

前もって感謝します

4

1 に答える 1

1

はい、可能です:

var tileList:TileList = addChild(new TileList()) as TileList;
tileList.setSize(500,50);
tileList.dataProvider = dp;//assumes there's already a DataProvider instance ready

tileList.scrollPolicy = ScrollPolicy.OFF;//' without showing the scroll bars'
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed);// right or left arrow
function onKeyPressed(event:KeyboardEvent):void{
    if(event.keyCode == Keyboard.LEFT)  tileList.horizontalScrollPosition -=10;
    if(event.keyCode == Keyboard.RIGHT) tileList.horizontalScrollPosition +=10;
}

キーボードの代わりに独自の矢印クリップとマウス イベントを使用できますが、ロジックは同じです。私の例の tileList は 500x50 であるため、 horizo​​ntalScrollPosition であることに注意してください。垂直アスペクト比には verticalScrollPosition を使用します。また、現在スクロールサイズは10ですが、レンダリングされる各セルのサイズ/速度などに依存する可能性があります.

別のオプションは、scrollToIndex()メソッドを使用することです。

var tileList:TileList = addChild(new TileList()) as TileList;
tileList.setSize(500,50);
tileList.dataProvider = dp;
var index:int = 0;//scroll index
var total:int = tileList.dataProvider.length;

tileList.scrollPolicy = ScrollPolicy.OFF;
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed);
function onKeyPressed(event:KeyboardEvent):void{
    if(event.keyCode == Keyboard.LEFT)  index--;
    if(event.keyCode == Keyboard.RIGHT) index++;
    if(index < 0    ) index = total-1;//loop to last
    if(index > total) index = 0;//loop to first
    tileList.scrollToIndex(si);
    trace('scroll index:',si);
}

また、Yahoo ! Astra コンポーネント セットは、説明のように聞こえ、Flash の V3 コンポーネントと互換性があるため便利です (たとえば、同じデータ プロバイダー( fl.data.DataProvider) を使用するなど):

ヤフー! Flash カルーセル コンポーネント

サンプルスニペットは次のとおりです。

var carouselData:Array =  
[  
    { label: "Ayers Rock", source: "uluru.jpg" },  
    { label: "Kata Tjuta", source: "katatjuta.jpg" },  
    { label: "Moraine", source: "morraine.jpg" },  
    { label: "Museum", source: "museum.jpg" },  
    { label: "Japan", source: "japan.jpg" },  
    { label: "YUI", source: "yui.jpg" }  
];  

var carousel:Carousel = new Carousel();  

carousel.dataProvider = new DataProvider( carouselData );  
carousel.labelField = "label";  
carousel.sourceField = "source";  

carousel.move( 54, 45 );  
carousel.setSize( 302, 102 );  
this.addChild( carousel );  
于 2012-04-18T09:23:35.143 に答える