2013-06-15 1 views
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]); 

    } 
} 
+1

Пожалуйста, уменьшите код до минимального примера. Я не понимаю ваш вопрос, и это слишком много для меня, чтобы копаться! – Dave

+0

yep, я сделаю это сразу же извините за это – tailedmouse

+0

Я сделал это, смогу у, пожалуйста, просмотрите его снова: D – tailedmouse

ответ

0

Я предполагаю, что вы хотите дисплей X объекты (в данном случае два) в то время, из массива. Какая бы длина ни была. Я использую Math lib. Подумайте, что я не пробовал код ниже с помощью 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()); 
    } 
}