AIR開発下のALertウィンドウがイジェクトできない
最近AIRプログラミングをしています.AIR開発は以前作ったRIA開発とは少し違いますが、結局一つはC/Sモードで、一つはB/Sモードです.最近ではテスト時にAlertポップアップウィンドウが必要になり、DebugモードでのワンステップデバッグでAlertウィンドウ情報が表示されますが、Runモードで実行するとAlertポップアップウィンドウが見えなくなり、奇妙なバグが発生します.
多くの解決策を試みたが、やはり効果が得られなかった.最後にAPIを見て、Alertのソースコードを追跡してみると、パラメータparentが少しおかしいことに気づいた.そのタイプのデフォルトはSpriteで、ソースコードを見てから、デフォルトではそのparentを指していることが分かった.空であればApplicationを指している(ソースコードは以下の通り).
最後に強制的にApplicationを指して、コンパイルして実行して、すべて正常です.
PS:同僚に聞いてみると、AIRの自動更新フレームワークがApplicationリファレンスの指向を変える可能性があるとのこと.これが上記のバグを引き起こす原因かもしれません
多くの解決策を試みたが、やはり効果が得られなかった.最後にAPIを見て、Alertのソースコードを追跡してみると、パラメータparentが少しおかしいことに気づいた.そのタイプのデフォルトはSpriteで、ソースコードを見てから、デフォルトではそのparentを指していることが分かった.空であればApplicationを指している(ソースコードは以下の通り).
if (!parent)
{
var sm:ISystemManager = ISystemManager(Application.application.systemManager);
if (sm.useSWFBridge())
parent = Sprite(sm.getSandboxRoot());
else
parent = Sprite(Application.application);
最後に強制的にApplicationを指して、コンパイルして実行して、すべて正常です.
PS:同僚に聞いてみると、AIRの自動更新フレームワークがApplicationリファレンスの指向を変える可能性があるとのこと.これが上記のバグを引き起こす原因かもしれません