この質問の補足として:オンライン試験アプリケーションを開発していますが、不正行為を防ぐにはどうすればよいですか?
Flex アプリケーションがフォーカスを失ったことを検出できますか? それは、ユーザーが別のアプリケーションをクリックしたか、ブラウザのタブを開いた場合ですか?
私はこれを読みました: Detecting when a Flex application loses focus but was not very clear...
この質問の補足として:オンライン試験アプリケーションを開発していますが、不正行為を防ぐにはどうすればよいですか?
Flex アプリケーションがフォーカスを失ったことを検出できますか? それは、ユーザーが別のアプリケーションをクリックしたか、ブラウザのタブを開いた場合ですか?
私はこれを読みました: Detecting when a Flex application loses focus but was not very clear...
そのリンクのコードの重要な部分は、
systemManager.stage.addEventListener(Event.DEACTIVATE,deactivate);
Flash プレーヤーは、フォーカスがプレーヤーに出入りするときに、アクティブ化イベントと非アクティブ化イベントを送信します。必要なのは、それらのリスナーを作成し、適切に反応することだけです。
アクティブ化および非アクティブ化イベントの使用方法のより明確な例は、blog.flexaxamples.comで見ることができます。
また、一部のブラウザーでは、アクティブ化および非アクティブ化イベントに問題があるようです。Colin Moock の詳細情報はこちらです。
メイン アプリケーション タグにアクティブ化のハンドラーを追加できます。これにより、フレックス アプリケーションがフォーカスされるたびに検出されます。例えば:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white"
activate="activateHandler(event);"
deactivate="deactivateHandler(event);">
これは、Flex ウィンドウがフォーカスを失ったことを検出するために機能しますが、Flex アプリを実際にクリックせずにウィンドウがフォーカスを取り戻したことを検出するには、HTML ラッパーの更新が必要ですよね? 何かのようなもの:
<script language="JavaScript" type="text/javascript">
<!--
// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = ${version_major};
// Minor version of Flash required
var requiredMinorVersion = ${version_minor};
// Minor version of Flash required
var requiredRevision = ${version_revision};
// -----------------------------------------------------------------------------
// -->
function onAppFocusIn()
{
${application}.onAppFocusIn();
alert("onAppFocusIn");
}
</script>
<body scroll="no" onFocus="onAppFocusIn()">
これを実装しようとしていますが、フレックス アプリ ウィンドウに戻ると onAppFocusIn() 関数が実行されません。ソースを表示すると、コードが表示されます。誰もが理由を知っていますか??
ありがとう、アニー
Flex 4.6 では、このコマンドは systemManager.stage.addEventListener(Event.DEACTIVATE, activate) で機能しますが、Flash アプリの wmode が window (デフォルト) に設定されていることを確認してください。wmode が透過的である場合、イベントはキャッチされませんでした。Flash アプリを配置する埋め込み html に wmode を設定します。例:
<object classid="clsid:D27WEE-A16D-21cf-90F2-422253540410" width="100%" height="100%"
id="MyApp" name="MyApp" align="middle">
<param name="movie" value="MyApp.swf?v=1.00.008" />
<param name="wmode" value="transparent"> <----- take out this
...