我在flex桌面应用程序中创建了一个用于登录的小应用程序。我在其中引用webservice方法进行登录已经创建了Authentication类。现在我想为移动设备提供不同的Textinput值,为密码提供Textinput值。在我的身份验证类中。
为此我创建了mxml类的对象。使用这个我在My Action脚本类中获取移动没有值和密码值。
这是我的代码: -
SBTS.mxml文件
<?xml version="1.0" encoding="utf-8"?>
<!-- usingas/AccessingPackagedClasses.mxml -->
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
public function login():void
{
var User:Authentication;
User = new Authentication();
User.authentication();
}
]]>
</mx:Script>
<mx:Panel width="100%" height="100%" layout="absolute">
<mx:TabNavigator width="100%" height="100%" id="viewstack2">
<mx:Form label="Login Form" id="loginform">
<mx:FormItem label="Mobile no:">
<mx:TextInput id="mobileno"/>
</mx:FormItem>
<mx:FormItem label="Password:">
<mx:TextInput displayAsPassword="true" id="password" />
</mx:FormItem>
<mx:FormItem>
<mx:Button label="Login" click="login()"/>
</mx:FormItem>
</mx:Form>
<mx:Form label="Child List">
<mx:Label width="100%" color="blue"
text="Select Child."/>
</mx:TabNavigator>
</mx:Panel>
</mx:WindowedApplication>
动作脚本类: -
package src
{
import adobe.utils.XMLUI;
import generated.webservices.*;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
public class Authentication
{
[Bindable]
private var childName:ArrayCollection;
[Bindable]
private var childId:ArrayCollection;
private var photoFeed:ArrayCollection;
private var arrayOfchild:Array;
private var newEntry:GetSBTSMobileAuthentication;
public var user:SBTSWebService;
public var mxmlobj:SBTS;
public function authentication():void
{
user =
new SBTSWebService();
if(user!=null)
{
user.addSBTSWebServiceFaultEventListener(handleFaults);
user.addgetSBTSMobileAuthenticationEventListener(authenticationResult);
newEntry =
new GetSBTSMobileAuthentication();
if(newEntry!=null)
{
mxmlobj =
new SBTS();
if(mxmlobj != null)
{
newEntry.mobile = mxmlobj.mobileno.text; // Getting error here error mention below
newEntry.password= mxmlobj.password.text;
}
user.getSBTSMobileAuthentication(newEntry);
}
}
}
public function handleFaults(event:FaultEvent):void
{
Alert.show(
"A fault occured contacting the server. Fault message is: " + event.fault.faultString);
}
public function authenticationResult(event:GetSBTSMobileAuthenticationResultEvent):void
{
if(event.result != null && event.result._return>0)
{
if(event.result._return > 0)
{
var UserId:int = event.result._return;
if(mxmlobj != null)
{
mxmlobj.loginform.enabled =
false;
mxmlobj.viewstack2.selectedIndex=1;
}
}
else
{
Alert.show(
"Authentication fail");
}
}
}
}
}
我收到此错误: -
TypeError:错误#1009:无法访问空对象引用的属性或方法。
at SBTSBusineesObject :: Authentication / authentication()[E:\ Users \ User1 \ Documents \ Fl ex Builder 3 \ SBTS \ src \ SBTSBusineesObject \ Authentication.as:35]
在SBTS / login()[E:\ Users \ User1 \ Documents \ Flex Builder 3 \ SBTS \ src \ SBTS.mxml:12]
在SBTS / ___ SBTS_Button1_click()[E:\ Users \ User1 \ Documents \ Flex Builder 3 \ SBTS \ src \ SBTS.mxml:27]
请帮我删除此错误。
答案 0 :(得分:0)
因为MXML文件尚未添加到显示列表中。 Flash播放器是单线程的,不会以您的代码认为的方式暂停操作。 mobileno为null,因为该对象已创建,但没有任何子对象。