Having a bit of trouble with
Mouse.show()
and losing focus of the swf
This isn't my demo: but its showing the same bug http://www.foundation-flash.com/tutorials/as3customcursors/
What i do to recreate it is:
mouse over the swf, hit cmd+tab to highlight another window, result is that the mouse is not brought back and is still invisible, (to get it back go to the window bar at the top of the screen and click something).
I have an area in which movement is detected and an image Things I have tried
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import com.greensock.*;
import flash.events.*;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.utils.*;
import flash.ui.Mouse;
public class mousey_movey extends MovieClip {
public var middle_of_the_flash;
//pixels per second
public var speeds = [0,1,3,5,10];
public var speed;
public var percentage_the_mouse_is_across_the_screen;
public var mouse_over_scrollable_area:Boolean;
public var image_move_interval;
public function mousey_movey() {
middle_of_the_flash = stage.stageWidth/2;
hot_area_for_movement.addEventListener(MouseEvent.MOUSE_OVER, mouseEnter);
hot_area_for_movement.addEventListener(MouseEvent.MOUSE_OUT, mouseLeave);
hot_area_for_movement.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
stage.addEventListener(Event.MOUSE_LEAVE, show_mouse);
stage.addEventListener(MouseEvent.MOUSE_OUT, show_mouse);
stage.addEventListener(Event.DEACTIVATE,show_mouse);
hot_area_for_movement.alpha=0;
hot_area_for_movement.x=0;
hot_area_for_movement.y=34;
}
public function show_mouse(e) {
trace(e.type)
trace('show_mouse')
Mouse.show();
}
public function onActivate(e) {
trace('activate');
Mouse.show();
}
public function onDeactivate(e) {
trace('deactivate');
}
public function get_speed(percantage_from_middle):int {
if(percantage_from_middle > 80)
{
return speeds[4]
}
else
{
if(percantage_from_middle > 60)
{
return speeds[3]
}
else
{
if(percantage_from_middle > 40)
{
return speeds[2]
}
else
{
if(percantage_from_middle > 20)
{
return speeds[1]
}
else
{
return 0;
}
}
}
}
}
public function mouseLeave(e:Event):void{
Mouse.show();
clearInterval(image_move_interval);
}
public function mouseEnter(e:Event):void{
Mouse.hide();
image_move_interval = setInterval(moveImage,1);
}
public function mouseMove(e:Event):void {
percentage_the_mouse_is_across_the_screen = Math.round(((middle_of_the_flash-stage.mouseX)/middle_of_the_flash)*100);
speed = get_speed(Math.abs(percentage_the_mouse_is_across_the_screen));
airplane_icon.x = stage.mouseX;
airplane_icon.y = stage.mouseY;
}
public function stageMouseMove(e:Event):void{
Mouse.show();
}
public function moveImage():void {
if(percentage_the_mouse_is_across_the_screen > 0)
{
moving_image.x+=speed;
airplane_icon.scaleX = -1;
}
else
{
moving_image.x-=speed;
airplane_icon.scaleX = 1;
}
}
}
}
Nothing too fancy, im just scrolling an image left of right at a speed which is generated by how far you are from the middle of the stage, and making an airplane moveclip follow the mouse.
The events:
stage.addEventListener(Event.MOUSE_LEAVE, show_mouse);
stage.addEventListener(MouseEvent.MOUSE_OUT, show_mouse);
stage.addEventListener(Event.DEACTIVATE,show_mouse);
All fire and work correctly when in the browser, seem a little buggy when running a test through flash, was expecting this as ive experienced it before.
The deactivate call even runs when testing and cmd+tabbing but shows no mouse.
Any help on the matter is appreciated
Thanks,
Dickie