PDA

Просмотр полной версии : Как можно отследить фокус в браузере


BAHUS
14.11.2007, 17:04
Задача проста. Есть игра на HTML страничке и хочется если человек переходит на другое окно браузера или прикрывает браузер в трай или открывает поверх другое приложение то ставить игру на паузу.

Есть в AS3 такого плана события?

Заранее спасибо.

baron27
14.11.2007, 17:16
есть событие MOUSE_LEAVE во флеше. Но мне кажется лучше использовать жаваскриптовое событие onBlur() (потеря фокуса) и передавать его во флеш.

BAHUS
14.11.2007, 17:49
MOUSE_LEAVE не подходит так как игра на клавишах а игрок может мышку просто увести. Java Script тоже не подойдет так как игра на разных доменах будет и браться в свободном порядке другими сайтами.

BAHUS
14.11.2007, 18:40
кажется проблема решилась очень просто

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

почему так?

etc
16.01.2008, 14:56
А как должно быть?

STILL.05
16.01.2008, 14:59
хмм, ну я предполагал что событие FocusEvent.FOCUS_OUT будет срабатывать когда stage вцелом потеряет фокус

как в таком случае определить что пользователь кликнул на другое окно браузера?

__i
16.01.2008, 15:54
Event.ACTIVATE
Event.DEACTIVATE

STILL.05
16.01.2008, 16:56
спасибо, работает