2010-04-09 4 views
0

Я надеюсь, что кто-то может пролить свет на этот вопрос для меня ... У меня есть мувиклип, который прокручивается с помощью «датчика» с каждой стороны Уровень. Клип прокручивается в обоих направлениях, но вот моя проблема:Вспышка - Простенький прокручиваемый движок, прокручиваемый датчиком на каждой стороне

Когда пользовательская мышь покидает сцену, клип останавливается на своих дорожках, и это не обеспечивает приятный плавный эффект. Глядя на код ниже, можно ли каким-либо образом сказать анимацию, чтобы облегчить, когда пользовательская мышь покидает сцену, а не просто останавливается внезапно?

class Sensor extends MovieClip { 

    public function Sensor() { 
    } 

    public function onEnterFrame() { 

     // 

     var active:Boolean; 

     // is mouse within sensor? 
     if ((_level2._xmouse >= this._x) && _level2._xmouse <= (this._x + this._width)) { 
      active = true;  
     } else { 
      active = false; 
     } 

     if(active) { 

      // which area of the sensor is it in? 
      var relative_position:Number; 
      var relative_difference:Number; 
      relative_position = _level2._xmouse/this._width * 100.0; 

      //_level2._logger.message("relative position is " + relative_position); 

      if (!isNaN(relative_position)) { 

       // depending on which area it is in, tend towards a particular adjustment 
       if(relative_position > _level2._background_right_threshold) { 
        relative_difference = Math.abs(relative_position - _level2._background_right_threshold); 
        //relative_difference = 10; 
       } else if(relative_position < _level2._background_left_threshold) { 
        relative_difference = Math.abs(_level2._background_left_threshold - relative_position); 
        relative_difference *= -1; 
       } else { 
        _level2._background_ideal_adjustment = 0; 
       } 


       var direction:Number; 
       if(_level2._pan_direction == "left") { 
        direction = 1; 
       } else { 
        direction = -1; 
       } 
       _level2._background_ideal_adjustment = direction * (relative_difference/10) * _level2._pan_augmentation; 
       //_level2._logger.message("ideal adjustment is " + _level2._background_ideal_adjustment); 
       if (!isNaN(_level2._background_ideal_adjustment)) { 

        // what is the difference between the ideal adjustment and the current adjustment? 
        // add a portion of the difference to the adjustment: 
        // this has the effect that the adjustment "tends towards" the ideal 
        var difference:Number; 
        difference = _level2._background_ideal_adjustment - _level2._background_adjustment; 
        _level2._background_adjustment += (difference/_level2._background_tension); 

        // calculate what the new background _x position would be 
        var background_x:Number; 
        var projected_x:Number; 
        background_x = _level2["_background"]._x; 
        projected_x = background_x += _level2._background_adjustment; 
        //_level2._logger.message("projected _x is " + projected_x); 

        // if the _x position is valid, change it 
        if(projected_x > 0) projected_x = 0; 
        if(projected_x < -(_level2["_background"]._width - Stage.width)) projected_x = -(_level2["_background"]._width - Stage.width); 
        _level2["_background"]._x = projected_x; 

        // i recommend that you move your other movieclips with code here 

       } 

      } 

     } 

    } 

} 

ответ

1

Ссылку вы предоставили не работает, но я думаю, что у меня есть совет

velocity=0; 
maxVelocity=3; 
accel=0.1; 
break=0.98; 


function onEnterFrame(){ 
    if (mouseOverRightSensor){ 
     velocity +=accel; 
    }else if (mouseOverLeftSensor){ 
    velocity -=accel; 
    } 
    // make sure you constrain the velocity 
    if (Math.abs(velocity)>maxVelocity) { 
    //get the sign of the velocity and multiply it with maxVelocity 
     velocity=Math.abs(velocity)/velocity * maxVelocity 
    } 
    //Add the velocity to the movieclip's position 
    movieclip.x+=velocity; 
    //shrink down the velocity, this is done each frame no matter if the mouse is over the sensor; 
    velocity*=break; 
} 

В основном вам нужно переместить мувик даже если мышь не над sensors.You выполнить это с помощью переменная скорости.

Возможно, вам потребуется настроить значения и добавить еще код, это всего лишь некоторый код концепции. Надеюсь, это вам поможет :)

+0

спасибо, это, кажется, лучший маршрут. Ссылка больше не работает, извинения. Еще раз спасибо. – SimonDowdles

Смежные вопросы