0

今のところ、配列から一度に 2 つのオブジェクトを取得しようとしています。しかし、すぐに私は奇数の長さと継ぎ合わせのアイテムを使用する予定です.

これはこれまでのところ、配列内の偶数で完全に機能しますが、奇数で機能させる方法がわかりません。それがうまくいくと思う方法は、次に来るオブジェクトをチェックするように依頼し、それが2未満の場合はカウンターを1に変更することですが、それをコードに具体的に入れる方法さえわかりません. 私はこれまでのところ自分のコードを投稿しました

import flash.events.MouseEvent;
import flash.net.Socket;


var socket_Array_current_position = 0;
var socket_counter = 2;
var socket_Array: Array = new Array ();

socket_Array.push(socket_one, socket_two,socket_three, socket_four, socket_five, socket_six);



go_next_left.addEventListener(MouseEvent.CLICK, go_left);
go_next_right.addEventListener(MouseEvent.CLICK, go_right);

function go_left(going_left:MouseEvent)
{

    if (socket_Array_current_position > 0)
    {
        socket_remove();
        socket_Array_current_position -=  socket_counter;
        socket_x_position = 125;
        socket_display();
    }

}

function go_right(going_right:MouseEvent)
{
    if (socket_Array_current_position < socket_Array.length-socket_counter)
    {
    socket_remove();
    socket_Array_current_position +=  socket_counter;
    socket_x_position = 125;
    socket_display();
    }
}



socket_display();

function socket_display()
{
    var s = 0;
    for (s; s < socket_counter; s++)
    {
        addChild(socket_Array[socket_Array_current_position + s]);
        socket_Array[socket_Array_current_position + s].x = socket_x_position;
        socket_Array[socket_Array_current_position + s].y = socket_y_position;
        //socket_Array[s].addEventListener(MouseEvent.CLICK, picked);
        socket_x_position = socket_x_position + 275;
    }
}


function socket_remove()
{
    var s = 0;
    for (s; s < socket_counter; s++)
    {

        removeChild(socket_Array[socket_Array_current_position+s]);

    }
}
4

1 に答える 1

0

配列から一度に X 個のオブジェクト (この場合は 2 つ) を表示したいとします。どんな長さでも。数学ライブラリを使用しています。以下のコードを sdk または Flash で試していないことを考慮してください。

const X_START_POS:int = 125;
const COLUMN_WIDTH:int = 275;
const QTY_SCREEN:int = 2;  
var socket_Array:Array = new Array(); 
var socket_Array_pos:int = 0; 
var socket_Array_target:int = 0; // target is always right 
var socket_Array_on_screen:Array = new Array();

// socket_Array.length must be >= QTY_SCREEN, always.
socket_Array.push(socket_one, socket_two, socket_three, socket_four, socket_five, socket_six); 

go_next_left.addEventListener(MouseEvent.CLICK, go_left);
go_next_right.addEventListener(MouseEvent.CLICK, go_right);

socket_display();

function go_left(going_left:MouseEvent) {
    socket_Array_target = Math.max(socket_Array_pos - QTY_SCREEN, 0);
    socket_display();
}

function go_right(going_right:MouseEvent) {
    socket_Array_target = Math.min(socket_Array_pos + QTY_SCREEN, socket_Array.length - QTY_SCREEN);
    socket_display();
}

function socket_display() {
    socket_remove();
    socket_x_position = X_START_POS;
    var limit:int = socket_Array_target + QTY_SCREEN;
    for (var i = socket_Array_target; i < limit; i++) {
        show_socket(socket_Array[i]);
        socket_x_position += COLUMN_WIDTH; 
    }
    socket_Array_pos = socket_Array_target;
}

function show_socket(asocket:DisplayObject) {
   addChild(asocket);
   asocket.x = socket_x_position;
   asocket.y = socket_y_position;
   socket_Array_on_screen.push(asocket);  // remember me
}

function socket_remove() {
    var qty:int = socket_Array_on_screen.length;
    for (var s = 0; s < qty; s++) {
        removeChild(socket_Array_on_screen.pop());
    }
}
于 2013-06-16T05:01:16.780 に答える