ciao a tutti!
ho scritto una classe per scrollare un clip in base alla posizione del mouse..
magari a qualcuno può essere utile..
premetto che non ho una mente molto matematica e che quindi c'è sicuramente un modo più breve per ottenere lo stesso risultato..
trovate i file di origine al link:
http://www.thetconcept.com/flepstudio/Sposta_Mouse.zip
sulla timeline ho un clip chiamato clip_mc lungo 929..
la classe che ho scritto:
Code:
package
{
import flash.display.MovieClip;
import flash.events.*;
public class Sposta_Mouse extends MovieClip
{
private var xmouse:Number=0;
private var xClip:Number=0;
private var speed:Number;
private var widthmovie:Number=550;
private var windthClip:Number=929;
private var scrollspeed :Number=10;
private var velocita:Number;
public function Sposta_Mouse()
{
init();
}
private function init():void
{
stage.frameRate=31;
initListeners();
}
private function initListeners():void
{
clip_mc.addEventListener(Event.ENTER_FRAME, sposta);
}
private function sposta(event:Event):void
{
xmouse = mouseX - (widthmovie / 2);
// Setto la speed:
speed = (xmouse) / scrollspeed;
// se la speed è negativa la rendo positiva..
if (speed < 0) {
speed = -(speed);
}
areaSensibile();
rallentoScrollEccessivo();
scrollOpposti();
stopScroll();
// spostiamo il clip!
clip_mc.x=xClip;
}
private function areaSensibile():void
{
//se il mouse non è tra questi due punti non sposto
if (mouseY > 246) {
speed=0;
}
if (mouseY < 90) {
speed=0;
}
}
private function rallentoScrollEccessivo():void
{
if (speed > (xClip*2)) {
speed = speed/3;
}
}
private function scrollOpposti():void
{
//se il mouse va a sinistra lo scroll va a destra no?
if (xmouse < 0) {
xClip = xClip + speed;
}
// e viceversa
if (xmouse > 0) {
xClip = xClip - speed;
}
}
private function stopScroll():void
{
// Check del limite sinistro del clip
if (xClip > 0) {
xClip = 0;
}
// Check del limite destro del clip
if (xClip < -(windthClip - widthmovie)) {
xClip = -(windthClip - widthmovie);
}
}
}
}
apro una parentesi su
Code:
private function rallentoScrollEccessivo():void
{
if (speed > (xClip*2)) {
speed = speed/3;
}
}
questo probabilmente non ha molto senso..
però se passo in fretta da un'estremità all'altra del filmato,
o dall'area inattiva ad un'estremità del filmato,
evita che lo scroll sia eccessivo e sgradevole..
a presto! :)
(ps. qualsiasi critica o consiglio per migliorarlo è benaccetto!)