В здравом мире, это работает, как ожидалось:Вспышка AS3/AIR: сравнение содержимого Screen.screens
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
один из своих собственных детей?
редактировать - Чтобы сделать это шаг вперед, проверить это:
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
)
Я знаю, «экран, экран, экранные точки экрана». Но я хотел привести настоящий пример. –