`
xurichusheng
  • 浏览: 344992 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Flex循环List

    博客分类:
  • Flex
阅读更多

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全选,反选

    在Flex4中,List组件是用于展示数据列表的常用组件,它可以显示一组可滚动的数据项。在实际应用中,我们经常需要实现对列表中的所有项进行全选或反选的操作,以便用户能快速选择或取消选择全部内容。本文将详细探讨...

    flex4滚动循坏显示List或者grid的内容,循环播放List

    利用list的滚动条,通过timer控制。循环滚动显示一个list。 把滚动条隐藏起来,模仿效果

    Adobe.Flex.4.Language.Reference

    4. **控制流程**:条件语句(if-else,switch)和循环(for,while,do-while)。 5. **函数**:函数定义、参数、返回值以及函数表达式。 6. **类和对象**:面向对象编程的核心概念,如类定义、继承、封装和多态。 7...

    flex中渲染器简介

    Flex 渲染器是Flex框架中的一个重要特性,主要用于在列表控件如List、DataGrid、Tree等中定制数据显示。在Flex中,渲染器允许开发者自定义列表中每一项的外观和行为,以此来提高用户体验和视觉吸引力。本系列将深入...

    flex 教程 flex 自学完成手册

    4. **组件库**:Flex提供了一套丰富的组件库,如Button、Text、List等,可以快速构建用户界面。通过自定义组件,你可以扩展这些基础组件,满足特定需求。 5. **事件处理**:学习如何监听和处理用户操作产生的事件,...

    flex支持过滤的input

    这里可以使用`Array.filter()`函数或自定义循环实现。 ```actionscript private function filterDataByText(text:String):void { var filteredItems:Array = dataProvider.filter(function(item:Object, index:int...

    Flex中组件datagrid导出Excel

    3. **XML序列化**:在Flex中,我们可以利用XML或XMLList来表示数据,因为它们可以轻松地转换成字符串,方便写入文件。将DataGrid的数据转换成XML,可以采用循环遍历的方式,将每行数据转换成一个XML节点,然后将所有...

    Flex 编程技巧

    第二种方法是使用ListCollectionView类来创建ArrayCollection的视图,具体操作是创建一个ListCollectionView实例,并传入ArrayCollection的List对象。 3. 打开URL 在Flex应用程序中打开新的浏览器窗口,并加载指定...

    Flex之URLLoader加载XML

    - `for` 循环遍历所有的子节点,并通过 `attribute("label")` 和 `attribute("data")` 访问它们的属性值。 3. `initApp` 函数在应用程序创建完成后调用,负责初始化加载过程: - 创建一个 `URLRequest` 对象,...

    flex 音乐盒 源码

    2. **组件使用**:Flex库中包含多种预定义的UI组件,如Button(按钮)、Slider(滑块)和List(列表)。音乐盒源码可能会用到这些组件来创建播放、暂停、音量控制和歌曲列表等元素。 3. **数据绑定**:Flex支持数据...

    Flex试题 .txt

    在Flex中,可以通过设置list的allowMultipleSelection属性为true来允许多选,同时利用dataProvider和selectedIndex属性来跟踪和更新所选项目的信息。 ### 16. 如何显示带有图片的Alert对话框? Flex的Alert类默认...

    flex做的打飞机小游戏

    8. **动画和图形**:Flex的DisplayList API允许开发者创建和管理复杂的图形动画。通过改变对象的位置、大小、透明度等属性,可以实现飞机的移动、子弹轨迹等动画效果。 9. **用户交互**:游戏的大部分乐趣来源于...

    Flex4语言参考手册

    2. **类库**:Flex4框架提供了一个庞大的类库,包括UI组件(如Button、Label、TextInput等)、数据管理类(ArrayCollection、XMLList等)、图形和布局管理类。这些类帮助开发者构建用户界面并处理数据。 3. **组件*...

    如何学习flex,从0开始的

    - **DisplayList**:理解DisplayObject和DisplayObjectContainer,以及事件传播(bubbling和propagating)机制。 - **多媒体处理**:如Sound、Video和NetConnection类,以及Graphics类的使用。 掌握AS3后,你可以...

    flex从入门到精通的源文件

    3. **Flex组件库**:熟悉各种内置组件,如Button、TextInput、List等,以及如何自定义组件。 4. **数据绑定**:理解Flex的数据绑定机制,如何将UI元素与后台数据模型关联起来。 5. **事件处理**:学习如何响应用户...

    Flex从入门到实践_1

    学习Flex需要理解ActionScript的基本语法,包括变量、数据类型、运算符、控制结构(如if-else、for循环)、函数和类。此外,熟悉面向对象编程的概念,如封装、继承和多态,对理解ActionScript至关重要。 3. **MXML...

Global site tag (gtag.js) - Google Analytics