Bорон
26.09.2007, 12:25
Доброго времени суток.
Возникла проблема - персонаж при резком повороте в любом направлении (резкой смене нажатых клавиш курсора) замирает на пару секунд неподвижно.
Не могу понять чем это вызвано.
Подскажите пожалуста...
персонаж.
http://nightfolk.net/work/mu/index.html
_root.rabbit.meta = {
direct:'stop_right',
x_pos:_root.rabbit._x,
y_pos:_root.rabbit._y,
move_pointer:null
}
_root.v_dir=0;
_global.step_delay=41;
_global.step_size=4;
_root.rabbit.avatar.gotoAndStop(_root.rabbit.meta.direct);
function move_up(){
if(_root.rabbit._y<60){
return;
}
_root.rabbit.meta.y_pos-=_global.step_size;
_root.rabbit._y = _root.rabbit.meta.y_pos;
}
function move_down(){
if(_root.rabbit._y>490){
return;
}
_root.rabbit.meta.y_pos+=_global.step_size;
_root.rabbit._y = _root.rabbit.meta.y_pos;
}
function move_left(){
if(_root.rabbit._x<20){
return;
}
_root.rabbit.meta.x_pos-=_global.step_size;
_root.rabbit._x = _root.rabbit.meta.x_pos;
}
function move_right(){
if(_root.rabbit._x>480){
return;
}
_root.rabbit.meta.x_pos+=_global.step_size;
_root.rabbit._x = _root.rabbit.meta.x_pos;
}
stop();
_root.keyListener = new Object();
_root.keyListener.onKeyUp = function() {
_root.v_dir--;
if(_root.v_dir>0){
return;
}
clearInterval(_root.rabbit.meta.move_pointer);
_root.rabbit.meta.move_pointer=null;
switch(_root.rabbit.meta.direct){
case 'move_up':
_root.rabbit.meta.direct = 'stop_up';
break;
case 'move_left':
_root.rabbit.meta.direct = 'stop_left';
break;
case 'move_right':
_root.rabbit.meta.direct = 'stop_right';
break;
case 'move_down':
_root.rabbit.meta.direct = 'stop_down';
break;
}
_root.rabbit.avatar.gotoAndStop(_root.rabbit.meta.direct);
}
_root.keyListener.onKeyDown = function() {
if(Key.isDown(Key.UP)){
if(_root.rabbit.meta.direct == 'move_up'){
return;
}
_root.v_dir++;
if(_root.rabbit.meta.direct.indexOf('stop')==-1){
clearInterval(_root.rabbit.meta.move_pointer);
_root.rabbit.meta.move_pointer=null;
}
_root.rabbit.meta.direct = 'move_up';
_root.rabbit.avatar.gotoAndStop(_root.rabbit.meta.direct);
if(_root.rabbit.meta.move_pointer==null){
_root.rabbit.meta.move_pointer = setInterval(move_up,_global.step_delay);
}
return;
}
if(Key.isDown(Key.DOWN)){
if(_root.rabbit.meta.direct == 'move_down'){
return;
}
_root.v_dir++;
if(_root.rabbit.meta.direct.indexOf('stop')==-1){
clearInterval(_root.rabbit.meta.move_pointer);
_root.rabbit.meta.move_pointer=null;
}
_root.rabbit.meta.direct = 'move_down';
_root.rabbit.avatar.gotoAndStop(_root.rabbit.meta.direct);
if(_root.rabbit.meta.move_pointer==null){
_root.rabbit.meta.move_pointer = setInterval(move_down,_global.step_delay);
}
return;
}
if(Key.isDown(Key.LEFT)){
if(_root.rabbit.meta.direct == 'move_left'){
return;
}
_root.v_dir++;
if(_root.rabbit.meta.direct.indexOf('stop')==-1){
clearInterval(_root.rabbit.meta.move_pointer);
_root.rabbit.meta.move_pointer=null;
}
_root.rabbit.meta.direct = 'move_left';
_root.rabbit.avatar.gotoAndStop(_root.rabbit.meta.direct);
if(_root.rabbit.meta.move_pointer==null){
_root.rabbit.meta.move_pointer = setInterval(move_left,_global.step_delay);
}
return;
}
if(Key.isDown(Key.RIGHT)){
if(_root.rabbit.meta.direct == 'move_right'){
return;
}
_root.v_dir++;
if(_root.rabbit.meta.direct.indexOf('stop')==-1){
clearInterval(_root.rabbit.meta.move_pointer);
_root.rabbit.meta.move_pointer=null;
}
_root.rabbit.meta.direct = 'move_right';
_root.rabbit.avatar.gotoAndStop(_root.rabbit.meta.direct);
if(_root.rabbit.meta.move_pointer==null){
_root.rabbit.meta.move_pointer = setInterval(move_right,_global.step_delay);
}
return;
}
}
Key.addListener(_root.keyListener);
Очень надеюсь на вашу помощь. С уважением. Ворон.
Возникла проблема - персонаж при резком повороте в любом направлении (резкой смене нажатых клавиш курсора) замирает на пару секунд неподвижно.
Не могу понять чем это вызвано.
Подскажите пожалуста...
персонаж.
http://nightfolk.net/work/mu/index.html
_root.rabbit.meta = {
direct:'stop_right',
x_pos:_root.rabbit._x,
y_pos:_root.rabbit._y,
move_pointer:null
}
_root.v_dir=0;
_global.step_delay=41;
_global.step_size=4;
_root.rabbit.avatar.gotoAndStop(_root.rabbit.meta.direct);
function move_up(){
if(_root.rabbit._y<60){
return;
}
_root.rabbit.meta.y_pos-=_global.step_size;
_root.rabbit._y = _root.rabbit.meta.y_pos;
}
function move_down(){
if(_root.rabbit._y>490){
return;
}
_root.rabbit.meta.y_pos+=_global.step_size;
_root.rabbit._y = _root.rabbit.meta.y_pos;
}
function move_left(){
if(_root.rabbit._x<20){
return;
}
_root.rabbit.meta.x_pos-=_global.step_size;
_root.rabbit._x = _root.rabbit.meta.x_pos;
}
function move_right(){
if(_root.rabbit._x>480){
return;
}
_root.rabbit.meta.x_pos+=_global.step_size;
_root.rabbit._x = _root.rabbit.meta.x_pos;
}
stop();
_root.keyListener = new Object();
_root.keyListener.onKeyUp = function() {
_root.v_dir--;
if(_root.v_dir>0){
return;
}
clearInterval(_root.rabbit.meta.move_pointer);
_root.rabbit.meta.move_pointer=null;
switch(_root.rabbit.meta.direct){
case 'move_up':
_root.rabbit.meta.direct = 'stop_up';
break;
case 'move_left':
_root.rabbit.meta.direct = 'stop_left';
break;
case 'move_right':
_root.rabbit.meta.direct = 'stop_right';
break;
case 'move_down':
_root.rabbit.meta.direct = 'stop_down';
break;
}
_root.rabbit.avatar.gotoAndStop(_root.rabbit.meta.direct);
}
_root.keyListener.onKeyDown = function() {
if(Key.isDown(Key.UP)){
if(_root.rabbit.meta.direct == 'move_up'){
return;
}
_root.v_dir++;
if(_root.rabbit.meta.direct.indexOf('stop')==-1){
clearInterval(_root.rabbit.meta.move_pointer);
_root.rabbit.meta.move_pointer=null;
}
_root.rabbit.meta.direct = 'move_up';
_root.rabbit.avatar.gotoAndStop(_root.rabbit.meta.direct);
if(_root.rabbit.meta.move_pointer==null){
_root.rabbit.meta.move_pointer = setInterval(move_up,_global.step_delay);
}
return;
}
if(Key.isDown(Key.DOWN)){
if(_root.rabbit.meta.direct == 'move_down'){
return;
}
_root.v_dir++;
if(_root.rabbit.meta.direct.indexOf('stop')==-1){
clearInterval(_root.rabbit.meta.move_pointer);
_root.rabbit.meta.move_pointer=null;
}
_root.rabbit.meta.direct = 'move_down';
_root.rabbit.avatar.gotoAndStop(_root.rabbit.meta.direct);
if(_root.rabbit.meta.move_pointer==null){
_root.rabbit.meta.move_pointer = setInterval(move_down,_global.step_delay);
}
return;
}
if(Key.isDown(Key.LEFT)){
if(_root.rabbit.meta.direct == 'move_left'){
return;
}
_root.v_dir++;
if(_root.rabbit.meta.direct.indexOf('stop')==-1){
clearInterval(_root.rabbit.meta.move_pointer);
_root.rabbit.meta.move_pointer=null;
}
_root.rabbit.meta.direct = 'move_left';
_root.rabbit.avatar.gotoAndStop(_root.rabbit.meta.direct);
if(_root.rabbit.meta.move_pointer==null){
_root.rabbit.meta.move_pointer = setInterval(move_left,_global.step_delay);
}
return;
}
if(Key.isDown(Key.RIGHT)){
if(_root.rabbit.meta.direct == 'move_right'){
return;
}
_root.v_dir++;
if(_root.rabbit.meta.direct.indexOf('stop')==-1){
clearInterval(_root.rabbit.meta.move_pointer);
_root.rabbit.meta.move_pointer=null;
}
_root.rabbit.meta.direct = 'move_right';
_root.rabbit.avatar.gotoAndStop(_root.rabbit.meta.direct);
if(_root.rabbit.meta.move_pointer==null){
_root.rabbit.meta.move_pointer = setInterval(move_right,_global.step_delay);
}
return;
}
}
Key.addListener(_root.keyListener);
Очень надеюсь на вашу помощь. С уважением. Ворон.