Lieber Besucher, herzlich willkommen bei: krpano.com Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
|
|
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); |