|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
package
{
import flash.display.Sprite;
import flash.events.Event;
import krpano_as3_interface;
public class followmouse extends Sprite
{
private var krpano : krpano_as3_interface = null;
public function followmouse()
{
if (stage == null)
this.addEventListener(Event.ADDED_TO_STAGE, startplugin);
}
private function startplugin(evt:Event):void
{
krpano = krpano_as3_interface.getInstance();
if ( krpano.get("version") < "1.0.7" )
{
krpano.call("error(followmouse plugin - wrong krpano version! 1.0.7 or higher needed);");
return;
}
// disable default mouse control
krpano.set("control.mousetype", "off");
// add frame listener
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
private function enterFrameHandler(event:Event):void
{
var mx:Number = stage.mouseX;
var my:Number = stage.mouseY;
var sx:Number = stage.stageWidth * 0.5;
var sy:Number = stage.stageHeight * 0.5;
// calc motion vectors: -1.0 to +1.0
var vx:Number = (mx - sx) / sx;
var vy:Number = (my - sy) / sy;
// advance it a little bit:
// - make moving slower in the middle
// - and faster in the outer regions
vx = (vx < 0 ? -1.0 : +1.0) * Math.pow(Math.abs(vx), 2.0);
vy = (vy < 0 ? -1.0 : +1.0) * Math.pow(Math.abs(vy), 2.0);
// stop very slow moving
if (Math.abs(vx) < 0.01) vx = 0;
if (Math.abs(vy) < 0.01) vy = 0;
// set move forces
krpano.set("hlookat_moveforce", vx);
krpano.set("vlookat_moveforce", vy);
}
}
}
|


|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
package
{
import flash.display.Sprite;
import flash.events.Event;
import krpano_as3_interface;
public class followmouse extends Sprite
{
private var krpano : krpano_as3_interface = null;
private var control_mousetype_backup:String = null;
public function followmouse()
{
if (stage == null)
{
this.addEventListener(Event.ADDED_TO_STAGE, startplugin);
this.addEventListener(Event.REMOVED_FROM_STAGE, stopplugin);
}
}
private function startplugin(evt:Event):void
{
krpano = krpano_as3_interface.getInstance();
if ( krpano.get("version") < "1.0.7" )
{
krpano.call("error(followmouse plugin - wrong krpano version! 1.0.7 or higher needed);");
return;
}
// save current control mode
control_mousetype_backup = krpano.get("control.mousetype");
// disable default mouse control
krpano.set("control.mousetype", "off");
// add frame listener
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
private function stopplugin(evt:Event):void
{
// remove frame listener
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
// restore old controlmode
krpano.set("control.mousetype", control_mousetype_backup);
}
private function enterFrameHandler(event:Event):void
{
var mx:Number = stage.mouseX;
var my:Number = stage.mouseY;
var sx:Number = stage.stageWidth * 0.5;
var sy:Number = stage.stageHeight * 0.5;
// calc motion vectors: -1.0 to +1.0
var vx:Number = (mx - sx) / sx;
var vy:Number = (my - sy) / sy;
// advance it a little bit:
// - make moving slower in the middle
// - and faster in the outer regions
vx = (vx < 0 ? -1.0 : +1.0) * Math.pow(Math.abs(vx), 2.0);
vy = (vy < 0 ? -1.0 : +1.0) * Math.pow(Math.abs(vy), 2.0);
// stop very slow moving
if (Math.abs(vx) < 0.01) vx = 0;
if (Math.abs(vy) < 0.01) vy = 0;
// set move forces
krpano.set("hlookat_moveforce", vx);
krpano.set("vlookat_moveforce", vy);
}
}
}
|
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import krpano_as3_interface;
public class followmouse extends Sprite
{
private var krpano : krpano_as3_interface = null;
public function followmouse()
{
if (stage == null)
{
this.addEventListener(Event.ADDED_TO_STAGE, startplugin);
this.addEventListener(Event.REMOVED_FROM_STAGE, stopplugin);
}
}
private function startplugin(evt:Event):void
{
krpano = krpano_as3_interface.getInstance();
if ( krpano.get("version") < "1.0.7" )
{
krpano.call("error(followmouse plugin - wrong krpano version! 1.0.7 or higher needed);");
return;
}
stage.addEventListener(Event.MOUSE_LEAVE, mouse_out);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouse_move);
}
private function stopplugin(evt:Event):void
{
stage.removeEventListener(Event.MOUSE_LEAVE, mouse_out);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouse_move);
}
private function mouse_move (event:MouseEvent):void
{
var mx:Number = stage.mouseX;
var my:Number = stage.mouseY;
var sx:Number = stage.stageWidth * 0.5;
var sy:Number = stage.stageHeight * 0.5;
// calc motion vectors: -1.0 to +1.0
var vx:Number = (mx - sx) / sx;
var vy:Number = (my - sy) / sy;
if ( event.buttonDown || (vx > -0.5 && vx < 0.5 && vy > -0.5 && vy < 0.5) )
{
// middle area - normal control
krpano.set("hlookat_moveforce", 0);
krpano.set("vlookat_moveforce", 0);
}
else
{
// outer area - automatic followmouse movement
vx = 2.0 * (vx < 0 ? -1.0 : +1.0) * (Math.max(Math.abs(vx),0.5) - 0.5);
vy = 2.0 * (vy < 0 ? -1.0 : +1.0) * (Math.max(Math.abs(vy),0.5) - 0.5);
// stop very slow moving
if (Math.abs(vx) < 0.01) vx = 0;
if (Math.abs(vy) < 0.01) vy = 0;
// set move forces
krpano.set("hlookat_moveforce", vx);
krpano.set("vlookat_moveforce", vy);
}
}
private function mouse_out(event:*):void
{
krpano.set("hlookat_moveforce", 0);
krpano.set("vlookat_moveforce", 0);
}
}
}
|
Benutzerinformationen überspringen
Wohnort: Netherlands
Beruf: Krpano custom coding / Virtual Tours / Photography / Musician / Recording engineer
: https://pame.virtualtuur.comright, to get it working with area you need to use also the area size and position,var mx:Number = stage.mouseX;
var my:Number = stage.mouseY;
var sx:Number = stage.stageWidth * 0.5;
var sy:Number = stage.stageHeight * 0.5;
Maybe 'stage' must be something else when using an area. area instead of stage? Don't think so?
|
|
Quellcode |
1 2 3 4 5 6 |
var area:Object = krpano.get("area");
var mx:Number = stage.mouseX - area.pixelx;
var my:Number = stage.mouseY - area.pixely;
var sx:Number = area.pixelwidth * 0.5;
var sy:Number = area.pixelheight * 0.5;
|
Benutzerinformationen überspringen
Wohnort: Netherlands
Beruf: Krpano custom coding / Virtual Tours / Photography / Musician / Recording engineer
: https://pame.virtualtuur.com|
|
Quellcode |
1 2 3 |
<action name="mouseFollowOff"> removeplugin(mousefollow); </action> |
|
|
Quellcode |
1 2 3 4 5 |
<plugin name="mousefollow" url="%SWFPATH%/plugins/followmouse.swf" keep="true" enabled="true" /> |
|
|
Quellcode |
1 |
plugin name="mouseFollowOffBtn" url="mouse-follow-off.png" alpha="0.9" y="-4" x="695" onclick="action(mouseFollowOff);"/> |
|
|
Quellcode |
1 2 |
set(hlookat_moveforce, 0); set(vlookat_moveforce, 0); |