Endpointの取得・設定 by Messenger Library にて、以下のコードのように列挙子を使用したものを書きましたけど、Messenger Libary 1.0でもEndpointsコレクションはItemプロパティを持っているので列挙子を使う必要がなかったですね。
// user は Microsoft.Live.Messenger.User オブジェクト
var es = user.get_endpoints().getEnumerator();
while (es.moveNext()) {
var e = es.get_current();
alert(e.get_name());
}
書き直すと、こうなります。CountプロパティとItemプロパティを使っています。こっちの方がわかりやすいですね。
var endpoints = user.get_endpoints();
for (var i = 0; i < endpoints.get_count(); ++i) {
alert(endpoints.get_item(i).get_name());
}
さて、Messenger Library 2.5ではすべてのコレクションがItemプロパティによるアクセスができるようになっています。たとえば次のようなUser.Contactsプロパティを操作するコードは、
var contacts = Sample.User.get_contacts().getEnumerator();
while (contacts.moveNext()) {
var c = contacts.get_current(); // Contactオブジェクト取得
var address = c.get_currentAddress(); // CurrentAddressプロパティの参照
address.get_presence().add_propertyChanged(Delegate.create(null, Sample.memberPresencePropertyChanged));
}
こう書き直せます。
var contacts = Sample.User.get_contacts();
for (var i = 0; i < contacts.get_count(); ++i) {
var address = contacts.get_item(i).get_currentAddress();
address.get_presence().add_propertyChanged(Delegate.create(null, Sample.memberPresencePropertyChanged));
}
ばしばし、Itemプロパティを使っていきましょう。