smartinvoke入门系列2——smartinvoke轻松上手



 简介:

本篇为smartinvoke开发系列的第一篇,主要让大家对smartinvoke有一个整体的认识,能够开发出简单独立的smartinvoke可运行桌面程序。

创建SmartInvoke项目:

依次选择Eclipse菜单栏中的 :文件 -> 新建 -> 其他 打开新建对话框,找到smartinvoke节点,选择New Project 节点,打开新建smartinvoke项目对话框,如下:

 

 

Project name 为项目名称;我们在这里输入:First

Main package 为项目入口类所在包名;我们在这里输入:cn.first

Class name 为项目入口类的类名称;我们在这里输入:FirstWin

 

输入完毕后点击完成,你会发现项目列表中新创建了两个项目,一个为Java类型项目,一个为Flex web application类型项目,结构如下图:




 
 

 

 

这两个项目构成了一个完整的smartinvoke项目First,它由Java类型项目First与Flex类型项目First_构成。Flex项目名称由Java项目名称加下划线”_”构成。通过这种项目名称的约定规则,smartInvoke IDE 将这两个项目关联在一起了。

这样一来,当调试或运行First_项目的FirstWin.mxml时,eclipse 不再是调用本机浏览器加载对应的swf了,而是调用关联的Java项目的入口类cn.first. FirstWin加载该swf。这样就实现了smartinvoke项目的开发与调试。Java项目First中的cn.first. FirstWin类是整个smartinvoke项目的入口类,它的main方法最先由jre调用执行。同时该类还控制着程序首先加载的swf文件的路径,程序打开主窗口的样式等。

 

通过将一个smartinvoke项目分割为两个相互关联的Java类型项目与Flex项目构成,这样使得程序的功能分工更加明确,Java负责逻辑,Flex负责界面显示。Java与Flex通信细节交由smartinvoke 完成。这样可以大大提高开发效率与代码的复用率。

 

创建服务类型(Service Class Type)实现Flex调用Java

这里的服务类型即实现了cn.smartinvoke.IServerObject接口的Java类,通过smartinvoke,该类的public 方法可以被Flex直接访问到。

点击eclipse 工具栏上的图标

 
打开Create new smartinvoke type 对话框如下图所示:



 

 

 

点击完成后,会在First项目的cn.first包中新建一名称为ServiceTest的类。内容如下:

package cn.first;

 import cn.smartinvoke.IServerObject;

 import cn.smartinvoke.ide.declare.AServiceType;

 @AServiceType

 public class ServiceTest implements IServerObject {

 public ServiceTest() {

        //smarinvoke will call this default constructure.

 }

 public void gc(){

     //when this service object not be used smartinvoke call this method free memory.

 }

}

然后我们在ServiceTest类中添加一简单的方法供Flex调用,如下:

public String hello(String info){

     System.out.println(info);

     return "hello Flex I'm java";

 }

 

我们会发现在ServiceTest类的申明处添加了@AServiceType注解,该注解的作用是告诉eclipse 可以将该类翻译成Flex可以直接调用的as代码。只有标记了@AServiceType注解的类eclipse才将其翻译为对应的as代码,所以如果想自定义一些调用逻辑可以将该注解注释掉。我们可以在关联的Flex项目First_的对应源代码目录cn/first下发现ServiceTest.as类,内容如下:

 

package cn.first{

import cn.smartinvoke.RemoteObject;

[RemoteClass(alias="cn.first.ServiceTest")]

public class ServiceTest extends RemoteObject{

 public static function CreateInstance0():ServiceTest{

var instance:ServiceTest=new ServiceTest();

instance.createRemoteObject(arguments);

return instance;

 }

 public function hello(info:String):String{

  var ret:Object=this.call('hello',arguments);

 return ret as String;

 }

}

}

 

细心观察下会发现ServiceTest.as类的方法与ServiceTest.java类的public 方法是一一对应的。

当Flex调用ServiceTest.as类中的hello方法时,其实是去调用对应的ServiceTest.java服务类中的hello方法,并获得对应返回值。

所以我们把ServiceTest.as类叫做:代理类型(Remote Class Type)。所有的代理类都继承了cn.smartinvoke.RemoteObject类。

 

修改First_项目的FirstWin.mxml文件的内容如下:

<?xml version="1.0" encoding="utf-8"?>

<si:SIApplication xmlns:mx="http://www.adobe.com/2006/mxml"

     xmlns:si="http://smartinvoke.cn" creationComplete="init()"

     layout="absolute" fontSize="12">

     <mx:Script>

        <![CDATA[

            import cn.first.ServiceTest;

           

            import mx.controls.Alert;

           private function init():void{

               //创建对应的java服务类型对象         

               var serv:ServiceTest=ServiceTest.CreateInstance0();

               //调用java服务对象上的方法

               var res:String=serv.hello("Hello Java I'm Flex");

              

               Alert.show(res);

               //当我们不再使用该对象后,回收该服务对象的资源

               serv.gc();

           }

        ]]>

     </mx:Script>

</si:SIApplication>

       

和普通flex web applicationch程序运行方式一样,右键FirstWin.mxml将该文件运行为web应用程序就可以看到程序运行效果了。

细心的同学会发现这里的FirstWin.mxml并没有继承自mx.core.Application而是继承自:cn.smartinvoke.gui.SIApplication,SIApplication类,它封装了与Java通信的细节,使得SIApplication具有了访问Java对象的能力。在SmartInvoke中所有的窗口类都应该继承自SIApplication类。

车辆动力学仿真模型的可信度评估方法 以转向工况测试为例,实车采集的方向盘转角作为车辆动力学模型的输入,记录车辆动力学模型的横摆角速度的输出结果,计算横摆角速度的幅频特性,根据《GB/T 6323-2014 转向盘角脉冲试验》的方法,获取横摆角速度峰值、横摆角速度谐振峰频率、横摆角速度谐振峰水平,与采集的实车结果对比,并计算车辆动力学模型和实车对于关键对比参数的相对误差。由公式(2)计算可得,在制动工况和转向工况测试下,车辆动力学模型和实车的纵向车速、制动减速度、制动距离、横摆角速度基本一致,精度> 85%,具有较好的精度。 阅读详情

相关推荐

告别上位机!用MCGS触摸屏+FTP服务器,5分钟搞定工控机文件自动同步

本文介绍了一种工业自动化领域的高效解决方案,通过MCGS触摸屏结合FTP服务器实现工控机文件的自动同步,无需开发上位机软件。该方案特别适用于图像采集、参数同步、数据备份等场景,具有成本低、可靠性高、维护简便等优势。详细配置指南和实战案例帮助用户快速实现零代码文件同步。

weixin_30872499的博客 560

关于smartinvoke开发工具的操作

关于开发工具的安装:          在http://smartrcp.org/invoke/?page_id=16下载完cn.smartinvoke.ide.zip文件后,解压后得到: cn.smartinvoke.ide.jar cn.smartinvoke.ide.parse.jar cn.smartinvoke.ide.update.jar cn.smartinvok...

smartinvoke的专栏 220

从零到飞:在Ubuntu 22.04上为你的无人机搭建PX4-Autopilot开发环境

本文详细指导在Ubuntu 22.04上搭建PX4-Autopilot开发环境,涵盖系统依赖安装、源码获取、编译目标选择及Gazebo仿真测试。通过优化构建过程和调试技巧,帮助开发者快速为无人机部署稳定的飞控系统,实现从仿真到实机的平滑过渡。

weixin_26878995的博客 489

smartinvoke入门系列1——smartinvoke的安装

首先确保你已正确安装了flash builder4的插件版,不是插件版的同学可以安装插件版,或者添加Java开发工具JDT插件到你的flash builder中。   然后到http://smartrcp.googlecode.com/files/cn.smartinvoke.ide.zip下载smartinvoke开发工具,下载完毕后解压该zip文件后,将得到的所有jar文件拷贝到flash...

smartinvoke的专栏 223

嵌入式GUI显示驱动配置实战:从emWin硬件接口到SPI屏驱动优化

在嵌入式系统开发中,显示驱动是连接GUI库与物理屏幕的核心底层模块,其本质是CPU与显示控制器之间的数据“翻译”与“传输”系统。其工作原理是通过实现特定的硬件抽象层接口,将GUI生成的图形数据转换为屏幕能识别的时序和协议。这项技术的核心价值在于,它允许开发者在资源受限的MCU上,通过适配不同的硬件接口,以最小的硬件开销实现稳定的图形输出。其典型应用场景包括智能家居面板、工业HMI、可穿戴设备等嵌入式图形界面开发。本文将深入解析emWin GUI库的驱动框架,重点探讨如何针对SPI、I2C等串行接口进行高效的

weixin_29159711的博客 342

SAP FICO 消息号 FAA_POST042 技术清算科目中的余额:分类账 0L,货币 00、RMB、10000.00-

SAP FICO 消息号 FAA_POST042 技术清算科目中的余额:分类账 0L,货币 00、RMB、10000.00-

我好像病了的博客 2139

smartinvoke入门系列10——多窗口的实现与互调

SmartInvoke还可以轻松的帮助你实现多窗口的功能。窗口之间可以方便的互调。首先我们点击eclipse工具栏上的图标:  打开新建对话框,输入如下内容:   点击完成后eclipse会在First_项目下新建一个SubWin.mxml文件。如下图:   我们在SubWin.mxml文件中添加一公共方法供FirstWin调用。内容如下:            public f...

smartinvoke的专栏 270

1.安装EMQX服务器

阿里云;EMQX

hfh8130的博客 5311

smartinvoke中文API及演示程序

java部分API: http://smartrcp.org/doc/java/   Flex部分API: http://smartrcp.org/doc/flex/   示例程序 下面所介绍的示例程序都可以从http://smartrcp.googlecode.com/files/demos.zip下载到。 SmartInvoke媒体播放器,可以播放flex所支持的媒体格式。它...

smartinvoke的专栏 247

设备接入与APP(应用程序)接入华为云iotDA平台的详细操作步骤及获取方式

设备及APP(应用程序) 登录 IoTDA 平台所需的 入场与操作清单内容,提供逐项详细操作步骤和获取方式,并穿插贴士便于理解与实际操作落地。内容基于 华为云 IoTDA 控制台 和 IAM 控制台 的实际使用路径整理。

hy行者勇哥的博客 3059

【Bug已解决】claude: No such file or directory — Claude Code 命令凭空消失解决方案

方案适用场景推荐指数难度方案一:重建软链接所有平台,软链接断裂⭐⭐⭐⭐⭐低方案二:修复 shebangnvm 用户,不想重装⭐⭐⭐⭐中方案三:nvm default aliasnvm 用户,长期稳定⭐⭐⭐⭐低方案四:切换到 Volta频繁切换 Node.js 版本⭐⭐⭐中方案五:修复 PATHPATH 配置丢失⭐⭐⭐⭐低方案六:Homebrew 安装macOS 用户,npm 不稳定⭐⭐⭐⭐低根本原因与。

博客 1万+

通过SmartInvoke运用java与flex轻松构建cs程序(两分钟轻松上手)

 原文地址http://smartinvoke.cn/pages/disArticel.jsp?id=13大家都知道flex的web application不能操作和访问本地文件,我们今天就通过 smartInvoke让flex可以轻松的访问到本地文件。 一:在java应用程序中创建一操作本地文件的test.CFile类,创建几个对文件进

smartinvoke的专栏 633

RK+linux教程:RK3588 RGA硬件加速在YOLOv5图像预处理中的深度应用教程

摘要: 本教程深入解析了RK3588芯片的RGA硬件加速器在YOLOv5图像预处理中的应用。通过专用硬件设计,RGA支持图像缩放、边界填充等核心操作,结合零拷贝技术显著提升处理效率。重点分析了LetterBox算法的RGA实现,包括参数计算、边界填充和性能优化,并与传统CPU处理对比,展示了RGA在高分辨率图像处理中的优势。教程还提供了统一的预处理接口设计,便于在OpenCV与RGA方案间灵活切换,为RK3588平台的深度学习部署提供实用优化方案。

LXY_LOVE36的博客 977

通过SmartInvoke运用java与flex轻松构建cs程序(理解SmartInvoke的运行原理)

 三种对象(理解这三种对象的概念是掌握SmartInvoke的关键):  服务对象:      即实现了IServiceable接口或注册到ITypefactory字典标记为服类型的类;  代码实现如下:view plaincopy to clipboardprint?

smartinvoke的专栏 532

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

通过SmartInvoke运用java与flex轻松构建cs程序(数据类型的传递)

flex与java基本类型对照关系如下: SmartInvoke对以下所列的基本数据类型做了特殊处理,提高了调用的效率, 这里要着重说下数组(Object[]),链表(LinkedList),与哈希字典(Hashtable) 这三种集合类型,虽然说它们是SmartInvoke的内置数据类型,但是可以用来存储任何 数据类型。  Java类型  flex类型 Boolean B...

smartinvoke的专栏 109

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

应用java与flex轻松构建cs程序

今天发现SmartInvoke这一好东西,拿过来与大家分享分享!   原文地址 http://smartinvoke.cn/pages/document.jsp   通过它可以轻松的实现java与flex在本地的互相调用,利用java与flex构建强大的CS程序不是梦。 原文如下: ================================================   ...

189

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

通过SmartInvoke运用java与flex轻松构建cs程序(捕获鼠标键盘事件)

 通过实现flashPlayer activeX的消息钩子可以很轻松的屏蔽掉flex的系统右键菜单,从而实现自己的右键菜单。当然这个消息钩子也会监听到键盘消息,从而你可以很轻松的实现自己的键盘事件。代码如下:view plaincopy to clipboardprint?  //将flash控件添加到窗体  this.f

smartinvoke的专栏 464

通过SmartInvoke运用java与flex轻松构建cs程序(映射服务类型与异种平台类型对应规则)

  本篇首先介绍   怎样将没有实现IServiceObject接口的类映射为服务类。 然后介绍   怎样修改默认的类型对应规则。   映射服务类型: 如果Java中的test.CFile类没有实现IServiceObject接口,而我们又 要flex的test.CFile代理类实例访问到该test.CFile类实例。

smartinvoke的专栏 555

使用java与flex轻便构建cs程序

 今日发现SmartInvoke这一好东西,拿过来与大伙分享分享! 原稿地址 http://smartinvoke.cn/pages/document.jsp 透过它可以轻巧的兑现java与flex在本土的相互调用,利用java与flex构建强大的CS程序不是梦。原稿如次:================================================ 

liangdiwei的专栏 447

通过SmartInvoke运用java与flex轻松构建cs程序(映射服务类型与异种平台类型对应规则)...

本篇首先介绍   怎样将没有实现IServiceObject接口的类映射为服务类。 然后介绍   怎样修改默认的类型对应规则。 映射服务类型: 如果Java中的test.CFile类没有实现IServiceObject接口,而我们又 要flex的test.CFile代理类实例访问到该test.CFile类实例。 在Java中...

smartinvoke的专栏 153

smartinvoke入门系列4——Java与Flex传递复杂类型

在Flex调用Java方法时,不仅可以传递基本数据类型,而且可以传递自定义复杂的数据类型。在这里我们把这种类型称作Bean Class Type,它的作用类似于J2EE里的Bean Class,只起着组织复杂数据的作用。 在eclipse 工具栏上点击 在Flex调用Java方法时,不仅可以传递基本数据类型,而且可以传递自定义复杂的数据类型。在这里我们把这种类型称作Bean Class Typ...

smartinvoke的专栏 176

关于smartinvoke开发工具的操纵

关于开发工具的安装: 入门视频教程:http://v.youku.com/v_show/id_XMTY1MzAxNDg4.html入门文档教程:http://smartinvoke.group.iteye.com/group/wiki/3026-smartinvoke-java-flex 在http://smartrcp.org/invoke/?page_id=16下载完cn.smarti

乱世情郎 631

smartinvoke入门系列9——窗口类型FlashShell与事件

SmartInvoke使用cn.smartinvoke.gui.shell.FlashShell类管理应用程序打开的窗口,通过该对象,用户可以设置窗口的标题,位置,大小,是否可以,透明度等属性,还可以监听窗口的 CShellEvent.Event_Activated,CShellEvent.Event_Closed,CShellEvent.Event_Deactivated, CShellEve...

smartinvoke的专栏 279

smartrcp入门视频系列一(hello world)

    swf文件下载地址:http://smartrcp.googlecode.com/svn/org.smartrcp.demo/src/vedios/vedio1.swf

smartinvoke的专栏 190

Adobe AIR这个鸡肋,我有话说

背景: 大约在09年的下半年用Adobe AIR技术做公司的BI系统,因为看重它在图表,地图上的优势。 刚刚开始还比较顺利,界面漂亮,与后台服务器交互有AMF。一起都是那么的顺利,可随着项目 的扩大,代码的增加,问题就暴露出来了,表现在:   1:内存占用非常大     随着打开模块数量的增加,使用时间的增长,程序占用的内存不断发展壮大,一般都保持在  700MB到1GB多,一般的...

smartinvoke的专栏 462
上一篇: smartinvoke入门系列1——smartinvoke的安装
下一篇: smartinvoke入门系列3——程序的打包与单独运行
smartinvoke
博客等级 码龄17年 4粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值