`
diding
  • 浏览: 81253 次
  • 性别: Icon_minigender_1
  • 来自: 四川
社区版块
存档分类
最新评论

Flex Air 周边整合之碎语

    博客分类:
  • Flex
阅读更多
手边近期有一个项目(薪酬系统)要开工,开始用Flex Air打理框架

1、Flex Air 依然作为本地前台;
2、中介语言不再采用php(amfphp),java(lds)或c#(FluorineFx)来搞了,直接采用assql;
3. 数据库采用远程数据库Mysql

[Note]
1.由于涉及远程数据库,所以用C++编辑Mysql联机参数,再采用Alchemy编译成swc来封装

//MySqlService.cpp
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "AS3.h"

AS3_Val GetMysqlArg(void* self, AS3_Val args)
{

	char* val = NULL;
        //本机
	AS3_Val localconn = AS3_Object("host:StrType,port:StrType,username:StrType,password:StrType,database:StrType","127.0.0.1","3306","xxxxx", "xxxx","xxxxx");
	//网络
        AS3_Val netconn = AS3_Object("host:StrType,port:StrType,username:StrType,password:StrType,database:StrType","xxx.xxx.xx.xx","3306","xxxxx", "xxxx","xxxx");
	
	AS3_ArrayValue( args, "StrType", &val );
	if(val == NULL)
	{
		return localconn;
	}
	
	return netconn;
	
}

int main()
{
	AS3_Val cMethod = AS3_Function( NULL, GetMysqlArg);
	AS3_Val result = AS3_Object("GetMysqlArg: AS3ValType",cMethod);
	AS3_Release(cMethod);
	AS3_LibInit( result );
	
	return 0;
}
 

//主程式运用
var cppMySqlService:CLibInit=new cmodule.mysqlservice.CLibInit;
	var mysqlArgObj:Object=cppMySqlService.init();
	//与远程数据库联机
	var mysqlServie:Object=mysqlArgObj.GetMysqlArg("net");
	SQLGlobal.set_mysql_host(mysqlServie.host);
	SQLGlobal.set_mysql_port(int(mysqlServie.port))
	SQLGlobal.set_mysql_username(mysqlServie.username)
	SQLGlobal.set_mysql_password(mysqlServie.password)
	SQLGlobal.set_mysql_database(mysqlServie.database)


2.由于项目又要涉及windows的相关操作,如调用.dll(FluorineFx Aperture framework)等并且还有考虑到以后软件的自动更新,所以在前期得将程序以exe包形式发布,由于air官方不支持exe包的自动更新,所以采用了nativeApplicationUpdater来处理,这样既兼顾了自动更新,也兼顾了与本地系统的API的交互;
protected function isNewerFunction(currentVersion:String, updateVersion:String):Boolean
{
	if (currentVersion == updateVersion)
	{
		trace("版本一样,直接进入平台")
		DoShowLogin()
	}
	else
	{
		trace("版本不一样")
		//提示用户是否更新
		Alert.show("软件有新的更新:版本(" + updater.updateVersion + ").下载安装更新吗?", "提示信息", 3, null, versionCloseHandler, null, 3)
	}
	return true;
}

private function versionCloseHandler(event:CloseEvent):void
{
	if (event.detail == Alert.YES)
	{
		trace("更新");
		doGoUpdate()
	}
	else
	{
		//客户不更新,直接登陆界面
		DoShowLogin()
	}
}

protected function doGoUpdate():void
{

	doCreateDownloadingView()
	updater.addEventListener(DownloadErrorEvent.DOWNLOAD_ERROR, updater_downloadErrorHandler);
	updater.addEventListener(UpdateEvent.DOWNLOAD_COMPLETE, updater_downloadCompleteHandler);
	updater.downloadUpdate();
}

private function doCreateDownloadingView():void
{
	
	//清空对象,创建下载更新包自定义界面
	MainAppContainer.removeAllChildren();

	var viewHGroup:HGroup=new HGroup();
	viewHGroup.setStyle("horizontalCenter", 0)
	viewHGroup.setStyle("verticalCenter", 0);
	viewHGroup.setStyle("verticalAlign", "top");
	MainAppContainer.addChild(viewHGroup)
	
	var bitmapImg:BitmapImage=new BitmapImage();
	bitmapImg.source='/assets/system_upgrade.png';
	viewHGroup.addElement(bitmapImg)
	
	var viewVGroup:VGroup=new VGroup();
	viewVGroup.percentWidth=100;
	viewVGroup.setStyle("horizontalAlign", "center")
	viewHGroup.addElement(viewVGroup)
	
	var infoLabel:Label=new Label();
	infoLabel.text="更新说明:"
	viewVGroup.addElement(infoLabel)
	
	var richTxt:RichText=new RichText();
	richTxt.text=updater.updateDescription;
	viewVGroup.addElement(richTxt);
	
	var prgBar:ProgressBar=new ProgressBar();
	prgBar.label="下载中... %3%";
	prgBar.source=updater;
	viewVGroup.addElement(prgBar);
}

protected function updater_errorHandler(event:ErrorEvent):void
{
	Alert.show(event.text);
}
protected function updater_initializedHandler(event:UpdateEvent):void
{
	trace("初始化毕,执行检查")
	updater.checkNow();
}
protected function updater_updateStatusHandler(event:StatusUpdateEvent):void
{
	if (event.available)
	{
		event.preventDefault();
	}
	else
	{
		Alert.show("Your application is up to date!");
	}
}
private function updater_downloadCompleteHandler(event:UpdateEvent):void
{
	trace("下载完成")
	updater.installUpdate();
}

private function updater_downloadErrorHandler(event:DownloadErrorEvent):void
{
	Alert.show("下载更新安装包出错,请稍候再试!");
}

/******************************************************************************/
public function DoShowLogin():void
{
	trace("显示登陆界面")
	this.stage.nativeWindow.visible=false
	var logoWin:LoginWindow=new LoginWindow()
	logoWin.open(true)
	logoWin.nativeWindow.x=Capabilities.screenResolutionX / 2 - logoWin.width / 2;
	logoWin.nativeWindow.y=Capabilities.screenResolutionY / 2 - logoWin.height / 2;
}

3.每一个控制单元仍然采用module来处理,本想采用常态的模式*.mxml来作界面,as编写操练,写了两三个模块单元,每次切换到Design模式,Adobe他爷爷,哇卡卡,最后还是把这个转换成全as,本想偷点懒,不想,还更花时间和精力。以后再也不想用尝试mxml(界面)+as(操纵)的方式,还有继续用全as来实现。卡死我了!

4.Tlf这么久了,还没有明显进步,Text Layout Framework Team,why!!!!!!!!!!!!,难道非得要第三方来编写TableElement,CodeElement,MediaElement吗?
分享到:
评论

相关推荐

    有关暑期实践的碎言碎语-忆虎门莱茵酒店.doc

    【文档标题】:“有关暑期实践的碎言碎语-忆虎门莱茵酒店.doc” 【文档描述】:本文档记录了一位作者在暑假期间在虎门莱茵酒店实习的体验和感悟,通过描绘工作中遇到的人和事,展现了作者的成长与情感变化。 ...

    基于VUE3+VITE版本的碎语系统.zip

    Vue3,springboot,element-ui使用技巧,实战应用开发小系统参考资料,源码参考。 详细介绍了一些Qt框架的各种功能和模块,以及如何使用Qt进行GUI开发、网络编程和跨平台应用开发等。 适用于初学者和有经验的开发者...

    小学高年级班主任工作的一些碎言碎语庆同小学陈丹霞PPT课件.pptx

    【小学高年级班主任工作策略】 小学高年级是孩子们身心发展的重要阶段,班主任在这个阶段的作用尤为重要。作为班主任,首要任务是对高年级学生的身心特点有深入理解。这个阶段的孩子正处于青少年过渡期,他们的思维...

    沐紫轩php个人博客系统v1.0

    支持日志url自定义,对搜索引擎更为友好 独有的碎语(微博)功能,让你用简单的文字记录生活 一键式更换模板,方便快捷打造个性博客 清爽的日志撰写页面、配以自动保存,书写博文更加舒适无忧 日志草稿箱功能,方便...

    website个人网站项目

    个人网站项目,模块包括说说模块(碎言碎语),文章模块、照片模块、用户模块、技术探讨、上传下载模块等模块。 数据库是mysql,项目中database文件夹中有相关的sql文件。 项目没有用到框架技术,servlet实现的。属于...

    blog.zip_手机性能

    功能介绍 支持日志url自定义,对搜索引擎更为友好 独有的碎语(微博)功能,让你用简单的文字记录生活 一键式更换模板,方便快捷打造个性博客 清爽的日志撰写页面、配以自动保存,书写博文更加舒适无忧 日志草稿箱...

    沐紫轩博客系统 v1.0.zip

    独有的碎语(微博)功能,让你用简单的文字记录生活 一键式更换模板,方便快捷打造个性博客 清爽的日志撰写页面、配以自动保存,书写博文更加舒适无忧 日志草稿箱功能,方便保存你未完成的日志 完美支持手机访问,...

    NDlog 1.2 RC.zip

    •改版后台整体界面,使之更为简单明了且美观 •改善表单提交等操作体验 •增加功能设置项N处 •功能导航重新整理 •…… 关于后台管理的修改与增删太多,不一一列出,童鞋们自行体验吧。 前台: 增加插件...

    emlog 4.2.1

    独有的碎语(微博)功能,让你用简单的文字记录生活 一键式更换模板,方便快捷打造个性博客 清爽的日志撰写页面、配以自动保存,书写博文更加舒适无忧 日志草稿箱功能,方便保存你未完成的日志 完美支持手机访问,...

    毕业设计_博客源码_v5.3.1.zip

    独有的碎语(微博)功能,让你用简单的文字记录生活 一键式更换模板,方便快捷打造个性博客 清爽的日志撰写页面、配以自动保存,书写博文更加舒适无忧 日志草稿箱功能,方便保存你未完成的日志 完美支持...

    中国村第二版全站程序

    每日碎语管理 新闻管理 文章管理 下载管理 酷站管理 链接管理 管理员密码&管理员组管理 首页统计定期更新 留言簿可以直接在留言簿进行管理,ART RASCAL web,ART RASCAL谢谢你的支持!

    贴图库emlog插件(免费图片外链) v1.0.0.zip

    4、因开发时间制约,碎语没有加上,视开发时间和用户需求再考虑是否加上。。。 5、插件默认上传后直接插入编辑器中(HTML外链代码),如果有站长上传量比较大,可以联系我们去掉外链代码。 6、安装使用遇到问题请...

    emlog v5.3.1.rar

    独有的碎语(微博)功能,让你用简单的文字记录生活 一键式更换模板,方便快捷打造个性博客 清爽的**志撰写页面、配以自动保存,书写博文更加舒适无忧 **志草稿箱功能,方便保存你未完成的**志 完美支持手机访问,...

    2014草根寻梦个人博客模板

    全套模板,包含首页、关于我、慢生活、碎言碎语、模板分享、学无止境、日记、作品展示等网站模板页面。模板说明:1、采用html5+css3设计(全静态html、没有后台程序)2、导航:鼠标悬停渐变显示英文标题3、banner:...

    沐紫轩博客系统 v1.0

    独有的碎语(微博)功能,让你用简单的文字记录生活 一键式更换模板,方便快捷打造个性博客 清爽的日志撰写页面、配以自动保存,书写博文更加舒适无忧 日志草稿箱功能,方便保存你未完成的日志 完美支持手机访问,...

    贴图库emlog插件(免费图片外链) v1.0.1.rar

    4、因开发时间制约,碎语没有加上,视开发时间和用户需求再考虑是否加上。。。 5、插件默认上传后直接插入编辑器中(HTML外链代码),如果有站长上传量比较大,可以联系我们去掉外链代码。 6、安装使用遇到问题请加...

    emlog-api:Emlog 的API插件 a plugin for emlog

    拼接地址大概如: https://blog.zhangziheng.com/api.php?route=article&sid=1TODO回复碎语登录注册获取文章列表请求方式: GET请求地址: article请求参数:sid 分类ID 可选,无sid则获取所有分类最新

    emlog 5.3.1.zip

    独有的碎语(微博)功能,让你用简单的文字记录生活 拥有专门的手机版本,随时随地记录你的生活 清爽的日志撰写页面、配以自动保存,书写博文更加舒适无忧 日志草稿箱功能,方便保存你未完成的日志 支持离线写作,...

    老王个人博客响应式HTML模板

    - **碎言碎语**:可能是一个日记或随笔的集合,展示博主的日常生活和思考。 - **学无止境**:可能是一个学习资源或教程分享的区域,反映博主的专业技能和知识分享。 - **留言板**:提供给访客留言互动的平台,博...

    NDesign 1.2 RC UTF8

    •改版后台整体界面,使之更为简单明了且美观 •改善表单提交等操作体验 •增加功能设置项N处 •功能导航重新整理 •…… 关于后台管理的修改与增删太多,不一一列出,童鞋们自行体验吧。 前台: 增加插件...

Global site tag (gtag.js) - Google Analytics