1. 在Flex页面有个请求,在<mx:Application>中定义 creationComplete="initApp();"
// 页面加载完成后初始化
internal function initApp():void {
// 随机查找30道试题,作为游戏练习使用
vocabulary.url="../../../../vocabularymgr/vocabularymgr!getVocabularyByRand.action?time="+new Date().time;
// 向服务器请求
vocabulary.send();
}
以HTTPService的方式发出请求:
<mx:HTTPService
id="vocabulary"
result="resultVocabularyHandler(event)"
fault="faultVocabularyHandler(event)"
method="POST"
resultFormat="text"
showBusyCursor="true">
</mx:HTTPService>
2. 在后台java代码中查询数据库,返回一个List对象,循环List,取出List中对象的属性值,以XML的方式传到Flex页面
HttpServletResponse response = ServletActionContext.getResponse();
PrintWriter out = null;
response.setContentType("text/html;charset=UTF-8");
out = response.getWriter();
StringBuffer respMsg = new StringBuffer("<list>");
// 随机查询30条的词汇
List<DcVocabularyPO> list = vocabularymgrService.getByRand(
30);
Iterator<DcVocabularyPO> it = list.iterator();
DcVocabularyPO po = null;
while (it.hasNext()) {
po = it.next();
respMsg.append("<Vocabulary>");
respMsg.append("<vocabularyName>")
.append(po.getVocabularyName())
.append("</vocabularyName>");
respMsg.append("<vocabularyType>")
.append(po.getVocabularyType())
.append("</vocabularyType>");
respMsg.append("<imageUrl>").append(po.getImageUrl())
.append("</imageUrl>");
respMsg.append("<word>").append(po.getWord())
.append("</word>");
respMsg.append("<prompt>").append(po.getPrompt())
.append("</prompt>");
respMsg.append("</Vocabulary>");
}
respMsg.append("</list>");
logger.info("get Vocabulary By Rand,the result is:\n"
+ respMsg);
// 返回页面
out.print(respMsg.toString());
if (null != out) {
out.close();
}
3. 在前端Flex页面接收后台传回的xml
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
// 试题
var _list:String;
// 词汇名称
private var vocabularyName:String;
// 词汇类型
private var vocabularyType:String;
// 图片URL
private var imageUrl:String;
// 单词(答案)
private var word:String;
// 提示
private var _prompt:String;
//
var ss:ArrayCollection = new ArrayCollection();
//题目序号
var index2:int;
// "随机查找30道试题"服务器响应
private function resultVocabularyHandler(event:ResultEvent):void{
_list = event.result.toString();
var xml:XML = XML(_list);
for each(var nodeXML:XML in xml.Vocabulary){
ss.addItem(nodeXML);
}
// 取出第一条
vocabularyName = ss.getItemAt(0).vocabularyName;
vocabularyType = ss.getItemAt(0).vocabularyType;
imageUrl = ss.getItemAt(0).imageUrl;
word = ss.getItemAt(0).word;
_prompt = ss.getItemAt(0).prompt;
question_name.text = vocabularyName;
//给控件赋值
if(vocabularyType=="0"){
myimg.source=imageUrl;
question_name.text="";
}else if(vocabularyType=="1"){
myimg.source="";
question_name.text=vocabularyName;
}else{
myimg.source=imageUrl;
question_name.text=vocabularyName;
question_name.x=384;
question_name.width=144;
myimg.width=191;
}
prompt.text=_prompt;
// 启动定时器
tgame.start();
}
// "随机查找30道试题"服务器响应
private function faultVocabularyHandler(event:FaultEvent):void{
Alert.show("试题加载失败,请稍后再试!");
}
//答题(键盘事件)
protected function textinput1_keyDownHandler(event:KeyboardEvent):void
{
if(event.charCode==13){
checkData();
}
}
//检查是否答对
public function checkData():void{
if(userResult.text==""){
Alert.show("答案不能为空");
}else{
if(StringUtil.trim(userResult.text.toLocaleLowerCase())==StringUtil.trim(word.toLocaleLowerCase())){
var y:int=parseInt(myscore.text.toString());
myscore.text=(1+y)+"";
index2++;
preIsOk=true;
//答对后置空相关信息
word="";
question_name.text="";
myimg.source="";
prompt.text="";
userResult.text = "";
next();
//this.parentDocument.sendMessage("6:"+this.parentDocument.playerName+"-"+index2+"-"+(1+y));
}
}
}
// 下一题
public function next():void{
// 取出下一条
vocabularyName = ss.getItemAt(index2).vocabularyName;
vocabularyType = ss.getItemAt(index2).vocabularyType;
imageUrl = ss.getItemAt(index2).imageUrl;
word = ss.getItemAt(index2).word;
_prompt = ss.getItemAt(index2).prompt;
question_name.text = vocabularyName;
//给控件赋值
if(vocabularyType=="0"){
myimg.source=imageUrl;
question_name.text="";
}else if(vocabularyType=="1"){
myimg.source="";
question_name.text=vocabularyName;
}else{
myimg.source=imageUrl;
question_name.text=vocabularyName;
question_name.x=384;
question_name.width=144;
myimg.width=191;
}
prompt.text=_prompt;
}
]]>
</mx:Script>
<mx:Image x="193" y="179" width="335" height="175" id="myimg" />
<mx:TextArea x="193" y="214" width="335" height="103" id="question_name" editable="false" contentBackgroundAlpha="0.0" textAlign="center" fontSize="24" borderVisible="false" borderAlpha="0.0" borderColor="#FDFAFA" fontWeight="bold" contentBackgroundColor="#FFFDFD" color="#FCF9F9">
</mx:TextArea>
<mx:TextInput x="10" y="427" width="204" id="userResult" keyDown="textinput1_keyDownHandler(event)" editable="true" height="30" fontWeight="bold" fontSize="18"/>
Flex具体代码请查看附件 codes.rar 中的 practice.mxml
分享到:
相关推荐
在Flex4中,List组件是用于展示数据列表的常用组件,它可以显示一组可滚动的数据项。在实际应用中,我们经常需要实现对列表中的所有项进行全选或反选的操作,以便用户能快速选择或取消选择全部内容。本文将详细探讨...
利用list的滚动条,通过timer控制。循环滚动显示一个list。 把滚动条隐藏起来,模仿效果
4. **控制流程**:条件语句(if-else,switch)和循环(for,while,do-while)。 5. **函数**:函数定义、参数、返回值以及函数表达式。 6. **类和对象**:面向对象编程的核心概念,如类定义、继承、封装和多态。 7...
Flex 渲染器是Flex框架中的一个重要特性,主要用于在列表控件如List、DataGrid、Tree等中定制数据显示。在Flex中,渲染器允许开发者自定义列表中每一项的外观和行为,以此来提高用户体验和视觉吸引力。本系列将深入...
4. **组件库**:Flex提供了一套丰富的组件库,如Button、Text、List等,可以快速构建用户界面。通过自定义组件,你可以扩展这些基础组件,满足特定需求。 5. **事件处理**:学习如何监听和处理用户操作产生的事件,...
这里可以使用`Array.filter()`函数或自定义循环实现。 ```actionscript private function filterDataByText(text:String):void { var filteredItems:Array = dataProvider.filter(function(item:Object, index:int...
3. **XML序列化**:在Flex中,我们可以利用XML或XMLList来表示数据,因为它们可以轻松地转换成字符串,方便写入文件。将DataGrid的数据转换成XML,可以采用循环遍历的方式,将每行数据转换成一个XML节点,然后将所有...
第二种方法是使用ListCollectionView类来创建ArrayCollection的视图,具体操作是创建一个ListCollectionView实例,并传入ArrayCollection的List对象。 3. 打开URL 在Flex应用程序中打开新的浏览器窗口,并加载指定...
- `for` 循环遍历所有的子节点,并通过 `attribute("label")` 和 `attribute("data")` 访问它们的属性值。 3. `initApp` 函数在应用程序创建完成后调用,负责初始化加载过程: - 创建一个 `URLRequest` 对象,...
2. **组件使用**:Flex库中包含多种预定义的UI组件,如Button(按钮)、Slider(滑块)和List(列表)。音乐盒源码可能会用到这些组件来创建播放、暂停、音量控制和歌曲列表等元素。 3. **数据绑定**:Flex支持数据...
在Flex中,可以通过设置list的allowMultipleSelection属性为true来允许多选,同时利用dataProvider和selectedIndex属性来跟踪和更新所选项目的信息。 ### 16. 如何显示带有图片的Alert对话框? Flex的Alert类默认...
8. **动画和图形**:Flex的DisplayList API允许开发者创建和管理复杂的图形动画。通过改变对象的位置、大小、透明度等属性,可以实现飞机的移动、子弹轨迹等动画效果。 9. **用户交互**:游戏的大部分乐趣来源于...
2. **类库**:Flex4框架提供了一个庞大的类库,包括UI组件(如Button、Label、TextInput等)、数据管理类(ArrayCollection、XMLList等)、图形和布局管理类。这些类帮助开发者构建用户界面并处理数据。 3. **组件*...
- **DisplayList**:理解DisplayObject和DisplayObjectContainer,以及事件传播(bubbling和propagating)机制。 - **多媒体处理**:如Sound、Video和NetConnection类,以及Graphics类的使用。 掌握AS3后,你可以...
3. **Flex组件库**:熟悉各种内置组件,如Button、TextInput、List等,以及如何自定义组件。 4. **数据绑定**:理解Flex的数据绑定机制,如何将UI元素与后台数据模型关联起来。 5. **事件处理**:学习如何响应用户...
学习Flex需要理解ActionScript的基本语法,包括变量、数据类型、运算符、控制结构(如if-else、for循环)、函数和类。此外,熟悉面向对象编程的概念,如封装、继承和多态,对理解ActionScript至关重要。 3. **MXML...