flex 登录问题.

SambaGao 2009-10-18 05:38:00
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at com.atsog.commands::LoginCommand()[D:\flex cms\FyzzLiveCMS\src\com\atsog\commands\LoginCommand.as:29]
at com.atsog.controllers::RemoteController/handleUIEvent()[D:\flex cms\FyzzLiveCMS\src\com\atsog\controllers\RemoteController.as:106]
at FyzzLiveCMS/__popMediator_uiEvent()[D:\flex cms\FyzzLiveCMS\src\FyzzLiveCMS.mxml:60]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at com.atsog.mediators::PopUpMediator/eventHandler()[D:\flex cms\FyzzLiveCMS\src\com\atsog\mediators\PopUpMediator.as:117]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:9298]
at com.atsog.views.panels::Login/authorise()[D:\flex cms\FyzzLiveCMS\src\com\atsog\views\panels\Login.mxml:63]
at com.atsog.views.panels::Login/__button1_click()[D:\flex cms\FyzzLiveCMS\src\com\atsog\views\panels\Login.mxml:78]


源代码是这样的.
login.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:mediators="com.atsog.mediators.*"
layout="absolute"
width="374"
height="184"
showCloseButton="false"
title="Login"
resizeEffect="Resize"
addedEffect="Fade"
creationComplete="this.addEventListener(KeyboardEvent.KEY_UP, keyHandler);"
borderColor="#E2E2E2" borderStyle="outset" backgroundColor="#E2E2E2" horizontalScrollPolicy="off" verticalScrollPolicy="off">

<mx:states>
<mx:State name="passReminder">
<mx:RemoveChild target="{password}"/>
<mx:RemoveChild target="{label1}"/>
<mx:SetProperty target="{label2}" name="text" value="Enter Email"/>
<mx:RemoveChild target="{linkbutton1}"/>
<mx:SetProperty target="{button1}" name="y" value="45"/>
<mx:SetProperty name="height" value="118"/>

<!-- Changes event for 'submit' button to 'pass reminder' -->
<mx:SetEventHandler target="{button1}" name="click">
<mx:handler>trace('pass reminder sent');</mx:handler>
</mx:SetEventHandler>
<mx:AddChild position="lastChild">
<mx:LinkButton x="-5" y="49" label="Login" click="this.currentState=''" color="#0012FF" addedEffect="Fade" textAlign="left"/>
</mx:AddChild>
<mx:SetStyle target="{button1}" name="removedEffect" value="Blur"/>
<mx:SetStyle target="{button1}" name="addedEffect" value="Blur"/>
<mx:SetProperty target="{hrule1}" name="y" value="38"/>
</mx:State>
</mx:states>

<mx:Script>
<![CDATA[
import com.atsog.service.AMFService;
import mx.events.CloseEvent;
import com.atsog.events.UIEvent;
import com.atsog.model.vo.AMFValue ;
import com.atsog.controllers.RemoteController ;

public function keyHandler(evt:KeyboardEvent):void
{
if (evt.keyCode == 13)
{
removeEventListener(KeyboardEvent.KEY_UP, keyHandler);
authorise(username.text, password.text)
}
}

public function authorise(username:String, password:String):void
{
trace('authorising');
//试试这个语法

AMFValue.amfValue = DataCom.text.toString() ;
var payload:Object = {username:username, password:password};

new RemoteController().initAMFService() ;

dispatchEvent(new UIEvent(UIEvent.LOGIN, payload));
dispatchEvent(new CloseEvent(CloseEvent.CLOSE));
}
]]>
</mx:Script>
<mx:Array id="data">
<mx:String>fyzzLive.cms</mx:String>
<mx:String>fyzzMusic.cms</mx:String>
<mx:String>fyzzInteractive.cms</mx:String>
<mx:String>fyzzProductions.cms</mx:String>
</mx:Array>
<mx:Label x="0" y="2" text="Username" id="label2"/>
<mx:Label x="0" y="29" text="Password" id="label1" addedEffect="Fade"/>
<mx:TextInput id="username" x="70" y="0" width="290" text="adam" tabIndex="1"/>
<mx:TextInput id="password" x="70" y="27" width="290" displayAsPassword="true" addedEffect="Fade" text="fethisaz" tabIndex="2"/>
<mx:Button x="274" y="101" label="Submit" click="authorise(username.text, password.text)" id="button1" tabIndex="4"/>
<mx:LinkButton x="0" y="108" label="Password Reminder" textAlign="left" color="#1200FF" id="linkbutton1" click="this.currentState='passReminder'" tabIndex="3"/>
<mx:HRule x="0" y="91" width="350" id="hrule1"/>
<mx:Label x="0" y="65" text="Data Center" width="81"/>
<mx:ComboBox x="70" y="63" width="199" id="DataCom" dataProvider="{data}"></mx:ComboBox>

</mx:TitleWindow>
...全文
221 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jv9 2009-10-19
  • 打赏
  • 举报
回复
你是想问什么呢?
kojie_chen 2009-10-19
  • 打赏
  • 举报
回复
没有声明就调用一个对象,当然不让你编译过了
gundamff 2009-10-19
  • 打赏
  • 举报
回复
无法访问属性或空对象引用的方法
调用了个null呗
SambaGao 2009-10-18
  • 打赏
  • 举报
回复
package com.atsog.model.vo
{
public class AMFValue
{
public static var amfValue:String = "fyzzLive.cms" ;
public static var amf:Boolean = false ;
public function AMFValue()
{
}

public static function getAmfValue():String {
return amfValue ;
}

public static function setAmValue(_str:String):void {
amfValue = _str ;
}


}
}
SambaGao 2009-10-18
  • 打赏
  • 举报
回复
package com.atsog.service
{
import com.atsog.events.DataEvent;

import flash.events.Event;
import flash.events.EventDispatcher;

import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.remoting.RemoteObject;

public class AMFService extends EventDispatcher
{
private var cms:RemoteObject;

public function AMFService(_str:String)
{
cms = new RemoteObject('amfphp');
cms.source = _str;
trace (_str) ;
addEventListeners();
}
private function addEventListeners():void
{
cms.addEventListener( FaultEvent.FAULT, faultHandler );
cms.getAll.addEventListener( ResultEvent.RESULT, getAllHandler );
cms.updateData.addEventListener( ResultEvent.RESULT, updateHandler );
cms.updateStyles.addEventListener( ResultEvent.RESULT, styleHandler );
cms.updateLayouts.addEventListener( ResultEvent.RESULT, updateHandler );
cms.updateSections.addEventListener( ResultEvent.RESULT, updateHandler );
cms.admin.addEventListener( ResultEvent.RESULT, adminHandler);
cms.authUser.addEventListener( ResultEvent.RESULT, authUserHandler);
cms.support.addEventListener( ResultEvent.RESULT, getTicketsHandler);
}

/*-----------------------------------------------------------------------------------------
GET ALL
-----------------------------------------------------------------------------------------*/

public function getAll(userLevel:Number):void
{
cms.getOperation('getAll').send(userLevel);
}

public function getAllHandler(evt:ResultEvent):void
{
dispatchEvent(new DataEvent(DataEvent.ALL_DATA_EVENT, evt.result.allDataStore));
}

/*-----------------------------------------------------------------------------------------
ADD, DELETE, EDIT, RENAME
-----------------------------------------------------------------------------------------*/


public function addItem(itemObj:Object):void
{
cms.getOperation('updateData').send(itemObj);
}

public function editItem(itemObj:Object):void
{
cms.getOperation('updateData').send(itemObj);
}

public function delItem(itemObj:Object):void
{
cms.getOperation('updateData').send(itemObj);
}

public function addPage(pageObj:Object):void
{
cms.getOperation('updateData').send(pageObj);
}

public function editPage(pageObj:Object):void
{
cms.getOperation('updateData').send(pageObj);
}

public function savePage(pageObj:Object):void
{
cms.getOperation('updateData').send(pageObj);
}


public function renamePage(pageObj:Object):void
{
cms.getOperation('updateData').send(pageObj);
}

public function updateSEO(seoObj:Object):void
{
cms.getOperation('updateData').send(seoObj);
}

private function updateHandler(evt:ResultEvent):void
{
if (evt.result is Boolean)
{
trace('boolean result, no returned data (updateData)');
}
else if (evt.result is Number)
{

}
else if (evt.result.menuId != null)
{
//do nothing
}

dispatchEvent(new Event('updateDataComplete'));
}

/*-----------------------------------------------------------------------------------------
Authorisation
-----------------------------------------------------------------------------------------*/


public function authUser(user:String, pass:String):void
{
var uO:Object = new Object;
uO.username = user;
uO.password = pass;
cms.getOperation('authUser').send(uO);
}

public function authUserHandler(evt:ResultEvent):void
{
if (evt.result.userLevel != null)
{
var payload:Object = new Object;
payload.username = evt.result.username;
payload.userLevel = String(evt.result.userLevel);

dispatchEvent(new DataEvent(DataEvent.LOGIN_EVENT, payload));
}
else
{
trace("wrong username.");
}
}

public function logout():void
{
var loginObj:Object = new Object();
loginObj.type = 'logout';
cms.getOperation('admin').send(loginObj);
}

/*-----------------------------------------------------------------------------------------
Password Reminder
-----------------------------------------------------------------------------------------*/

public function passReminder(email:String):void
{
cms.getOperation('passReminder').send(email);
}

public function passReminderHandler( event:ResultEvent ):void
{
trace('passReminder run');
}

public function passChangeReminder(username:String, newPass:String, reminderCode:int):void
{
cms.getOperation('passChangeReminder').send(username, newPass, reminderCode);
}

public function passChangeReminderHandler( event:ResultEvent ):void
{
trace('passChangeReminder run');
}

/*-----------------------------------------------------------------------------------------
Password Change
-----------------------------------------------------------------------------------------*/

public function passChange(username:String, newPass:String, password:String):void
{
cms.getOperation('passChange').send(username, newPass, password);
}

public function passChangeHandler( event:ResultEvent ):void
{
trace('password changed');
}

/*-----------------------------------------------------------------------------------------
Admin functions
-----------------------------------------------------------------------------------------*/

public function addUser(obj:Object):void
{
cms.getOperation('admin').send(obj);
}

public function editUser(obj:Object):void
{
cms.getOperation('admin').send(obj);
}

public function delUser(obj:Object):void
{
cms.getOperation('admin').send(obj);
}

public function listUser(obj:Object):void
{
cms.getOperation('admin').send(obj);
}

private function adminHandler(evt:ResultEvent):void
{
//listUsers will cancel it's on handler, otherwise run listUsers.
if (evt.result is ArrayCollection)
{
trace((evt.result as ArrayCollection).getItemAt(0).username);
dispatchEvent(new DataEvent('userList', evt.result));
}
else
{
var usersObj:Object = new Object();
usersObj.type = 'listUsers';
listUser(usersObj);
}
}

/*-----------------------------------------------------------------------------------------
Style functions
-----------------------------------------------------------------------------------------*/

public function addStyle(styleObj:Object):void
{
cms.getOperation('updateStyles').send(styleObj);
}

public function editStyle(styleObj:Object):void
{
cms.getOperation('updateStyles').send(styleObj);
}

public function deleteStyle(styleObj:Object):void
{
cms.getOperation('updateStyles').send(styleObj);
}

private function styleHandler(evt:ResultEvent):void
{
dispatchEvent(new Event('updateStylesComplete'));
}

/*-----------------------------------------------------------------------------------------
Support tickets
-----------------------------------------------------------------------------------------*/

public function getTickets(supportObj:Object):void
{
cms.getOperation('support').send(supportObj);
}

public function addTicket(ticket:Object):void
{
cms.getOperation('support').send(ticket);
}

public function addResponse(ticket:Object):void
{
cms.getOperation('support').send(ticket);
}

public function takeTicket(ticket:Object):void
{
cms.getOperation('support').send(ticket);
}

private function getTicketsHandler(evt:ResultEvent):void
{
if ((evt.result != null) && (evt.result != true))
{
var payload:Object = new Object();
var tickets:Array = evt.result as Array;

payload.tickets = tickets;
dispatchEvent(new DataEvent(DataEvent.TICKET_EVENT, payload));
}
else
{
dispatchEvent(new Event('updateTickets'));
}
}


/*-----------------------------------------------------------------------------------------
Save Layout
-----------------------------------------------------------------------------------------*/

//nb this uses the updateDataHandler.
public function saveLayout(layoutObj:Object):void
{
cms.getOperation('updateLayouts').send(layoutObj);
}

public function editLayout(layoutObj:Object):void
{
cms.getOperation('updateLayouts').send(layoutObj);
}

public function deleteLayout(layoutObj:Object):void
{
cms.getOperation('updateLayouts').send(layoutObj);
}

/*-----------------------------------------------------------------------------------------
Sections
-----------------------------------------------------------------------------------------*/

public function addSection(sectionObj:Object):void
{
cms.getOperation('updateSections').send(sectionObj)
}

public function deleteSection(sectionObj:Object):void
{
cms.getOperation('updateSections').send(sectionObj)
}

public function saveSection(sectionObj:Object):void
{
cms.getOperation('updateSections').send(sectionObj)
}

/*-----------------------------------------------------------------------------------------
Fault handler
-----------------------------------------------------------------------------------------*/


public function faultHandler(fault:FaultEvent):void
{
Alert.show("There has been an error in loading or saving data", "Warning");
}

}
}
SambaGao 2009-10-18
  • 打赏
  • 举报
回复
package com.atsog.controllers
{

import com.atsog.commands.AddPageCommand;
import com.atsog.commands.DeleteFilesCommand;
import com.atsog.commands.DeletePageCommand;
import com.atsog.commands.GetTicketsCommand;
import com.atsog.commands.ICommandContext;
import com.atsog.commands.LoadPageCommand;
import com.atsog.commands.LoginCommand;
import com.atsog.commands.SavePagesCommand;
import com.atsog.commands.UploadFileCommand;
import com.atsog.commands.UploadFilesCommand;
import com.atsog.events.UIEvent;
import com.atsog.mediators.MainViewMediator;
import com.atsog.mediators.PopUpMediator;
import com.atsog.model.AppModel;
import com.atsog.model.Session;
import com.atsog.model.vo.AMFValue;
import com.atsog.model.vo.MenuItem;
import com.atsog.service.AMFService;

import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;

import mx.collections.ArrayCollection;

public class RemoteController extends EventDispatcher implements ICommandContext
{
private var _service:AMFService;
private var _model:AppModel;
private var _session:Session;
private var _view:MainViewMediator;
private var _popup:PopUpMediator;

public function RemoteController(target:IEventDispatcher=null)
{
super(target);
//_service = new AMFService() ;
}

public function initAMFService():void {
_service = new AMFService(AMFValue.amfValue);
}

public function startup():void
{
trace('starting up');

}

public function login():void
{
trace('logging in');
}

public function showWait(message:String):void
{
_popup.showWait(message);
}

public function clearWait():void
{
_popup.clearWait();
}

public function showError(errorMessage:String, fatal:Boolean):void
{
}

public function get services():AMFService
{
return _service;
}

public function update(pages:ArrayCollection, selectedItem:MenuItem):void
{
_view.showPage(pages, selectedItem);
}

public function handleUIEvent(evt:UIEvent):void
{
var payload:Object = evt.payload;

trace('remotecontroller: handling event ' + evt.kind);

switch (evt.kind)
{
case UIEvent.ADD_PAGE:
new AddPageCommand(this, _model, payload).execute();
break;

case UIEvent.DELETE_FILE:
new DeleteFilesCommand(this, _model, payload).execute();
break;

case UIEvent.DELETE_PAGE:
new DeletePageCommand(this, _model, payload).execute();
break;

case UIEvent.GET_TICKETS:
new GetTicketsCommand(this, _model).execute();
break;

case UIEvent.LOGIN:
new LoginCommand(this, _model, _session, payload).execute();
break;

case UIEvent.LOAD_PAGE:
new LoadPageCommand(this, _model, _session, payload).execute();
break;

case UIEvent.SHOW_POPUP:
_popup.add(payload as String);
break;

case UIEvent.SAVE_PAGES:
new SavePagesCommand(this, _model, _session, payload).execute();
break;

case UIEvent.UPLOAD_FILES:
new UploadFilesCommand(this, _model, payload).execute();
break;

case UIEvent.UPLOAD_FILE:
new UploadFileCommand(this, _model, payload).execute();
break;

default:
trace('what kind of UIEvent is this? - ' + evt.kind);
break;
}
}

public function set model(model:AppModel):void
{
_model = model;
}

public function get model():AppModel
{
return _model;
}

public function set session(session:Session):void
{
_session = session;
}

public function get session():Session
{
return _session;
}

public function set view(mediator:MainViewMediator):void
{
_view = mediator;
}

public function set popup(popup:PopUpMediator):void
{
_popup = popup
}
}
}

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧