parentDocument
Flex SDK 4.1 と 4.5 の間でいくつかの不一致が見られます。簡単に言えば、4.1 で動作する既存のコードは 4.5 (および 4.6) では壊れています。以下に示す小さな例を示します。
TestProject.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="500" minHeight="500" xmlns:local="*">
<local:SubComponent x="50" y="50"/>
</s:Application>
サブコンポーネント.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="200" height="200">
<fx:Script>
<![CDATA[
import spark.components.Application;
protected function button1_clickHandler(event:MouseEvent):void
{
var app:Application = this.parentDocument as Application;
if (app != null) {
trace('Good');
} else {
trace('Bug');
}
}
]]>
</fx:Script>
<s:Button x="18" y="20" label="Button" click="button1_clickHandler(event)"/>
</s:Group>
4.1 SDK を使用すると、Application
を介してオブジェクトを正常に取得できますparentDocument
。ただし、これは 4.5 SDK では失敗します。4.5 ではparentDocument
、スキン オブジェクトになりました。
"parentDocument" spark.skins.spark.ApplicationSkin (@9d7e479)
2 レベル上がると、Application オブジェクトを正常に取得できます。
"parentDocument.parentDocument" TestProject (@9d7e0a1)
parentDocument
したがって、に置き換えることで問題を回避できparentDocument.parentDocument
ます。ただし、この変更が今後も一貫性があると期待できる期待される動作なのか、それとも将来的に修正される可能性が高いバグなのかはわかりません。物事をやっています。だから、私の質問は次のとおりです。
- 他の誰かがこの問題に遭遇しましたか? もしそうなら、どのように対処しましたか?
- 回避策を開発した場合、そのソリューションは特定の SDK バージョンに依存していますか、それともすべての SDK バージョンで機能しますか?
- 4.1 から 4.5 への動作の変更は意図的なものでしたか、それともバグですか? バグの疑いがありますが、いずれにしても決定的なものを見つけることができませんでした。
上記の私の例は、最小限のコードと最小限の複雑さで問題を示すために工夫されていることに注意してください。私の実際のプロジェクトでは、サブコンポーネントを含むモジュールがあり、サブコンポーネントに(経由で)TitleWindow
メソッドを呼び出させようとしています。そのため、サブコンポーネントは実際にはではなくを探しているため、オブジェクトを見つける他の方法を含む回避策は実際には適用できません。TitleWindow
parentDocument
Application
TitleWindow
Application