代码之家  ›  专栏  ›  技术社区  ›  matt lohkamp

Flash/AIR AS3:比较Screen.screens的内容

  •  3
  • matt lohkamp  · 技术社区  · 14 年前

    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.getScreensForRectangle(this.stage.nativeWindow.bounds) Screen.bounds ,尽管有两个,但仍然不匹配 Rectangle 具有相同尺寸的对象!

    疯了,女士们先生们!你甚至不想看到我组合起来的解决方法(提示:它涉及比较 Screen.bounds.toString() 关于 )

    1 回复  |  直到 14 年前
        1
  •  2
  •   fenomas    14 年前

    这是一个有根据的猜测,但自从 Screen.screens Screen 对象(而不是保留一组内部 屏幕

    Screen.screens.indexOf(Screen.screens[0])
    

    你有两个单独的入口 屏幕。屏幕 ,因此,如果这些调用中的每一个都返回不同的对象数组,则很容易理解为什么找不到任何匹配项—因为 indexOf 方法测试===相等,所以两个不同的 对象将不匹配,即使它们恰好包含有关同一物理屏幕的信息。

    var scr:Array = Screen.screens;
    trace( scr.indexOf(scr[0]) ); // returns 0