В нормальном мире это работает как ожидалось:
var array:Array = ['a','b','c'];
trace(array.indexOf(array[0])); // returns 0
В безумном мире это происходит:
trace(Screen.screens.indexOf(Screen.screens[0])); // returns -1
... если Screen.screens
является Array
из доступных экземпляров Screen
, почему этот массив не может дать точного indexOf
одного из своих собственных потомков?
edit - Чтобы сделать шаг вперед, проверьте это:
for each(var i:Screen in Screen.screens){
for each(var j:Screen in Screen.getScreensForRectangle(this.stage.nativeWindow.bounds)){
trace(i, j, i == j); // returns false
trace(i.bounds, j.bounds, i.bounds == j.bounds); // returns false
}
}
Как минимум один Screen
, указанный в Screen.screens
, должен быть идентичен Screen
в Screen.getScreensForRectangle(this.stage.nativeWindow.bounds)
- но даже если вы сравните Screen.bounds
, он все равно не совпадет, несмотря на два Rectangle
объекты одинакового размера!
Безумие, дамы и господа! Вы даже не хотите видеть обходной путь, который я собрал (подсказка: он включает сравнение значений Screen.bounds.toString()
для содержимого Screen.screens
)