Просмотр полной версии : Как можно отследить фокус в браузере
Задача проста. Есть игра на HTML страничке и хочется если человек переходит на другое окно браузера или прикрывает браузер в трай или открывает поверх другое приложение то ставить игру на паузу.
Есть в AS3 такого плана события?
Заранее спасибо.
есть событие MOUSE_LEAVE во флеше. Но мне кажется лучше использовать жаваскриптовое событие onBlur() (потеря фокуса) и передавать его во флеш.
MOUSE_LEAVE не подходит так как игра на клавишах а игрок может мышку просто увести. Java Script тоже не подойдет так как игра на разных доменах будет и браться в свободном порядке другими сайтами.
кажется проблема решилась очень просто
stage.focus = this;
stage.addEventListener(FocusEvent.FOCUS_IN, focusInAction);
stage.addEventListener(FocusEvent.FOCUS_OUT, focusOutAction);
главное вернуть stage.focus = this; обратно когда игрок возвращается
STILL.05
16.01.2008, 14:35
package {
import flash.display.Sprite
import flash.text.TextField
import flash.events.FocusEvent
public class TestFocus extends Sprite {
private var bg_mc:Sprite
private var log_txt:TextField
public function TestFocus() {
bg_mc = new Sprite()
bg_mc.graphics.beginFill(0xaaaaaa, 1);
bg_mc.graphics.drawRect(0, 0, this.stage.stageWidth, this.stage.stageHeight);
bg_mc.graphics.endFill();
this.addChild(bg_mc)
log_txt = new TextField()
log_txt.border = true
log_txt.width = 150
log_txt.height = 350
log_txt.background = true
log_txt.multiline = true
log_txt.selectable = false
this.addChild(log_txt)
this.stage.addEventListener(FocusEvent.FOCUS_IN, focusInAction);
this.stage.addEventListener(FocusEvent.FOCUS_OUT, focusOutAction);
}
private function focusInAction(e:FocusEvent):void {
log_txt.htmlText += '<b>focusInAction</b>'
log_txt.scrollV = log_txt.maxScrollV
}
private function focusOutAction(e:FocusEvent):void {
log_txt.htmlText += 'focusOutAction'
log_txt.scrollV = log_txt.maxScrollV
}
}
}
при клике на текстовое поле генерится событие FocusEvent.FOCUS_IN
а при клике на bg_mc - FocusEvent.FOCUS_OUT
почему так?
STILL.05
16.01.2008, 14:59
хмм, ну я предполагал что событие FocusEvent.FOCUS_OUT будет срабатывать когда stage вцелом потеряет фокус
как в таком случае определить что пользователь кликнул на другое окно браузера?
Event.ACTIVATE
Event.DEACTIVATE
STILL.05
16.01.2008, 16:56
спасибо, работает
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.