Edge プレビュー 5 から、ランタイムも v 0.1.5 にバージョンアップしました。それに伴い追加あるいは置き換えられた API がいくつかあります。
プレビュー版 4 以前のバージョンで制作したコンポジションは、変更が必要なケースもあると思いますので、ご注意ください。
まず、新規に追加された API は、以下の 3 つです。いずれも、シンボルのインスタンスから利用するものです。
sym.getParentSymbol() sym.getLabelPosition("ラベル名") sym.createChildSymbol("シンボル名", "親要素名", インデックス)
最初の getParentSymbol() は、シンボルのインスタンスの親にあたる要素を返します。今までなかったのが不思議なくらいです。
2 つ目の getLabelPosition() は、シンボルのタイムライン上の、ラベルの位置を返します。指定されたラベル名が見つからないと undefined が返されます。引数に文字列以外を指定したときの振る舞いは保障されないそうです。
最後の createChildSymbol() は少し詳しく説明します。
以前の記事で書いたように、コンポジションには createSymbolChild() というメソッドがあります。定義されているクラスは異なりますが、名前も動作も似ているのが、紛らわしいところです。
comp.createChildSymbol("シンボル名", 親のセレクタ, インデックス)
両者の大きな相違点は、生成されるインスタンスの親となる要素の指定方法です。
comp.createSymbolChild() の第 2 引数は、jQuery のセレクタです。このセレクタが指す要素が 2 つ以上存在する場合、それぞれの要素に対して子オブジェクトが生成されます。そのため、このメソッドは配列を返します。
これに対して、sym.createChildSymbol() は、シンボルの内部から見つける要素の名前を指定します。シンボルの内部には、同じ名前の要素は複数存在しないはずなので、生成されるインスタンスは常に 1 つです。そのため、メソッドが返す値も、単体のオブジェクトです。こちらのメソッドの方が使いやすそうですね。
廃止予定の API
さて、以下は、置き換えられる予定の API です。これらを使用している場合は、スクリプトの書き直しが必要になります。
最初は、getSymbolElementNode() です。これは getSymbolElement() で置き換えられることになります。
sym.getSymbolElement()
新しく追加された getSymbolElement() は、インスタンスの DOM 要素への jQuery ハンドルを返します。getSymbolElementNode() は DOM 要素を返す仕様だったため、 $() で囲んで変換する必要がありました。
次は、setParameter() と getParameter() です。それぞれ、以下のメソッドで置き換えられます。
sym.setVariable("変数名", 変数値) sym.getVariable("変数名")
こちらは、名前が変わっただけのようです。
コメントする