首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flex 4:窗口系统开发思想

flex 4:窗口系统开发思想
EN

Stack Overflow用户
提问于 2010-08-25 06:11:46
回答 1查看 431关注 0票数 0

我的应用程序需要一些窗口,但我不能使用popUpManager来处理自定义组件,所以我在考虑实现一个新的窗口系统。

但我仍然不知道如何将它与我的自定义组件合并。有什么想法吗?

我的代码:

我的登录皮肤:

代码语言:javascript
复制
<s:Skin(...)>
   <s:Group>
      (...login components...)
   </s:Group>
</s:Skin>


package com.totty.app.components.login {
import com.totty.app.TottysBrain;
import com.totty.app.components.window.Window;
import com.totty.app.events.LoginSuccessEvent;
import com.totty.tottysBrain.components.BrainyDynComponent;
import com.totty.tottysBrain.components.BrainyWindow;

import flash.events.Event;
import flash.events.MouseEvent;

import mx.controls.Alert;
import mx.managers.PopUpManager;

import spark.components.Button;
import spark.components.CheckBox;
import spark.components.Group;
import spark.components.Label;
import spark.components.TextInput;
import spark.components.supportClasses.SkinnableComponent;

[Event(name="loginSuccess", type="com.totty.app.events.LoginSuccessEvent")]
public class Login extends BrainyDynComponent {
    [SkinPart(required="true")]
    public var email:TextInput;

    [SkinPart(required="true")]
    public var password:TextInput = new TextInput();

    [SkinPart(required="false")]
    public var rememberMe:CheckBox;

    [SkinPart(required="false")]
    public var notification:Label;

    [SkinPart(required="true")]
    public var submit:Button = new Button();

    private var _currentState:uint = 0;
    private var _states:Array = ['default', 'logging', 'loginFailure', 'loginSuccess'];

    private var _default:Boolean = false;
    private var _logging:Boolean = false;
    private var _loggingSuccess:Boolean = false;
    private var _loggingFailure:Boolean = false;

    public function Login() {
        super();

        defaultCommand = 'users.login';
        defaultSkin = LoginSkin;

        _setCurrentState(0);

        onPartAdded('submit', function():void {
                submit.addEventListener(MouseEvent.CLICK, _submitLoginButton_click);
        });

        onPartRemoved('submit', function():void {
                submit.removeEventListener(MouseEvent.CLICK, _submitLoginButton_click);
        });

        onPartAdded('window', function():void{
            //window.addEventListener('close', _window_close);
            //window.title = 'Login';
        });
    }

    private function _window_close(evt:Event):void{
        dispatchEvent(evt);

        var parentAsGroup:Group = parent as Group
        parentAsGroup.removeElement(this);
    }

    protected function _submitLogin():void {
        _setCurrentState(1);
        submitData({email:email.text, password:password.text, rememberMe:rememberMe.selected});
    }

    override protected function _onSuccess(result:*):void {
        Alert.show(result);
        _setCurrentState(3);
        if(result) {
            dispatchEvent(new LoginSuccessEvent(email.text, rememberMe.selected));
            _loggingSuccess = true;
        }else{
            _setCurrentState(4);
            _loggingSuccess = false;
        }
    }

    override protected function _onFailure(result:*):void {
        Alert.show(result);
        _setCurrentState(4);
        _loggingSuccess = false;
    }

    private function _submitLoginButton_click(evt:MouseEvent):void {
        _submitLogin();
    }

    private function _setCurrentState(n:uint):void{
        if(_currentState == n) return;

        _currentState = n;
        invalidateProperties();
    }

    override protected function commitProperties():void{
        super.commitProperties();




        switch(_currentState){
            case 0:
                // default
                //window.footerText = '';
            break;
            case 1:
                // logging
                //window.footerText = 'logging';
            break;
            case 2:
                // loginFailure
                //window.footerText = 'loginFailure';
            break;
            case 3:
                // loginSuccess
                //window.footerText = 'loginSuccess';
                //parentBrain.removeElement(this);
                //var parentAsGroup:Group = parent as Group
                //PopUpManager.removePopUp(this);
                //parentAsGroup.removeElement(this);
            break;
        }
    }
}

}`

现在,我有了在窗口中添加此组件的主应用程序。我更希望在设计界面时能够看到窗口。这意味着必须将窗口组件添加到组件中。不是使用,而是类似于包含组件的所有内容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-25 07:28:52

也许你已经看过了,但不管怎样,这是一个很好的起点:)

http://code.google.com/p/flexmdi/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3561443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档