`
diding
  • 浏览: 80270 次
  • 性别: 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

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

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

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

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

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

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

    website个人网站项目

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

    blog.zip_手机性能

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

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

    老王个人博客响应式HTML模板,响应式布局,自适应分辨率,兼容PC端和移动端,全套模板,包括首页、关于我、碎言碎语、学无止境、留言板等个人网站模板页面。

    沐紫轩博客系统 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

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

    NDesign 1.2 RC UTF8

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

Global site tag (gtag.js) - Google Analytics