Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 查看屏幕上我们所在的位置_Flash_Apache Flex_Actionscript 3_Blackberry Playbook - Fatal编程技术网

Flash 查看屏幕上我们所在的位置

Flash 查看屏幕上我们所在的位置,flash,apache-flex,actionscript-3,blackberry-playbook,Flash,Apache Flex,Actionscript 3,Blackberry Playbook,我有一个黑莓playbook Flex应用程序,它有一个表单。有一个TextArea输入,当“聚焦在”中时,会推送一个带有全屏文本区域的新视图。当该全屏文本区域被填充时,单击一个按钮,屏幕将弹出到原始形式 问题: 当我弹出第二个屏幕时,它返回到顶部的第一个表单,而不是保留我们在页面上的视图位置。。。是否仍然可以返回到我们正在编辑的表单部分?您可以使用包含最后一个滚动坐标的参数[1]来推动编辑视图,并且在弹出[2]视图时,您可以将这些坐标设置为返回值,以便第一个表单视图可以向下滚动[3] [1]

我有一个黑莓playbook Flex应用程序,它有一个表单。有一个TextArea输入,当“聚焦在”中时,会推送一个带有全屏文本区域的新视图。当该全屏文本区域被填充时,单击一个按钮,屏幕将弹出到原始形式

问题:
当我弹出第二个屏幕时,它返回到顶部的第一个表单,而不是保留我们在页面上的视图位置。。。是否仍然可以返回到我们正在编辑的表单部分?

您可以使用包含最后一个滚动坐标的参数[1]来推动编辑视图,并且在弹出[2]视图时,您可以将这些坐标设置为返回值,以便第一个表单视图可以向下滚动[3]

[1]
pushView
的第二个参数接受任何对象:

navigator.pushView(EditView, {position:"someValue"});
[2] 覆盖
createReturnObject
以在弹出视图时创建返回对象:

public function createReturnObject():Object

[3] 在viewActivate eventhandler中,
数据
-属性将保存推送的对象。

从alopix的响应中汲取灵感,我提出了以下解决方案,该解决方案适用于整个应用程序。我必须扩展View类:

MyView.as

这是必需的,这样每次视图激活(被查看)时,它的verticalScrollPosition值都将存储在全局变量中(如下所示)。“mainContent”是MyGroup的ID,它存储实际MXML视图中的所有内容(因此我们可以跟踪它并更新其垂直滚动位置)

用于存储每页垂直滚动位置的全局变量

我必须将所有Y坐标存储在一个名为verticalPositionTracker的全局变量中。这只是一个“页面标题”=>verticalScrollPosition(如Y坐标)的对象,例如:

  • 登录页面->120
  • 结果页面->200
  • 等等

    <?xml version="1.0" encoding="utf-8"?>
    <s:MobileApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                 xmlns:s="library://ns.adobe.com/flex/spark" firstView="view.LoginView" backgroundColor="0xF5FAFF">
    
    <fx:Script>
    <![CDATA[
        public var verticalPositionTracker:Object = new Object();
    ]]>
    </fx:Script>
    
    </s:MobileApplication>
    
    Results.mxml(工作示例) 然后,我将该组包含在ID为“mainContent”的视图中(这很重要,因为它允许视图知道将y坐标设置到哪个组)

    
    
    PlayBook设备的问题太多,我认为您无法做到这一点。从别人那里获得灵感,但却把“正确答案”归功于自己,这是一种不好的形式。更好的方法是:给@alopix一个“正确的答案”,并对其进行评论,说“这很有帮助!看看我最终得出的答案。”这很公平,但alopix的答案并不完整,因为我们必须不断通过y坐标。如果我们离开该页面,然后返回,滚动位置将丢失。此外,如果我们的应用程序已经传递了相关的数据,那么我们必须更改整个应用程序以适应这种情况。给了他一个+和一个勾号,尽管他的解决方案并不完整,也不是真的和我的一样。。。此线程的新用户将自动使用他的解决方案,因为他有滴答声,这就是为什么您在其底部添加注释的原因。这个网站不是关于提出完整的解决方案。它是关于给出想法和答案,以帮助您获得完整的解决方案。特别是如果问题/答案很复杂。
    <?xml version="1.0" encoding="utf-8"?>
    <s:MobileApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                 xmlns:s="library://ns.adobe.com/flex/spark" firstView="view.LoginView" backgroundColor="0xF5FAFF">
    
    <fx:Script>
    <![CDATA[
        public var verticalPositionTracker:Object = new Object();
    ]]>
    </fx:Script>
    
    </s:MobileApplication>
    
    public class AirpointGroup extends VGroup
    {
    
        public var pageID:String;
    
        public function AirpointGroup()
        {
            super();
        }
    
        override public function set verticalScrollPosition(value:Number):void{
            if (layout)
            {
                layout.verticalScrollPosition = value;
            }
            trace("The position of "+this.pageID+" has changed to "+value);
            if(value!=0)
                FlexGlobals.topLevelApplication.verticalPositionTracker[pageID] = value;
        }
    }
    
    <?xml version="1.0" encoding="utf-8"?>
    <components:MyView xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:components="components.*"
        xmlns:s="library://ns.adobe.com/flex/spark" title="Tasks" xmlns:mx="library://ns.adobe.com/flex/mx">
    
    <s:Scroller left="0" right="0" top="0" bottom="0">
        <components:MyGroup pageID="{this.title}" id="mainContent">
                      <!-- ALL CONTENT GOES HERE -->
        </components:MyGroup>
    </s:Scroller>
    
    
    </components:MyView>