记录:AS3 与 其他语言 的一些不同点:

SAP AS01-AS03 屏幕增强实战:AIST0002 BAdI 与 3 个关键事务码配置详解 本文详细解析了SAP资产管理模块中AS01-AS03事务码的屏幕增强实战,重点介绍了AIST0002 BAdI的应用与三个关键事务码(AOLK/AOLA/CMOD)的配置技巧。通过分层架构解析、BAdI深度定制及事务码联合作战,帮助ABAP顾问实现资产主数据字段的无缝集成与业务逻辑校验,提升企业级增强的效率和可靠性。 阅读详情

一:for each ... in
与 for..in 一样都是自动遍历对象的属性,不同的是for each...in 更像是为遍历保存键值对的集合而产生的,而这些集合的类型可以是未声明类型的对象,甚至XML文件,而在遍历时循环中的循环变量类型声明是用"*"号来表示,意为任意类型。
1:遍历未声明类型对象:
var arr:Object = {1:"jack",2:2046};
for each(var i:* in arr)
{
 trace(i);
}
/-----
jack
2046

2:遍历XML:
var xml:XML = <beans>
    <bean>jack</bean>
    <bean>2046</bean>
     </beans>;
for each(var item:* in xml.bean)
{
 trace(item);
}
/-----
jack
2046

二:break的特殊用法:
在AS3中,由于其作用于动画的特殊性,孕生出很有意思的的label标签用法。此label标签不能独立存在,必须依赖break、continue两个跳转关键字进行使用。
gotoout:for(var i:int = 0; i < 10; i++)
  {   
   for(var j:int = 0; j < 10; j++)
   {
    trace("i:" + i + ",j:" + j);
    if((i==0)&& (j==8)){
     break gotoout;
    }
   }   
  }
/-----
i:0,j:0
i:0,j:1
i:0,j:2
i:0,j:3
i:0,j:4
i:0,j:5
i:0,j:6
i:0,j:7
i:0,j:8

在这里gotoout标签包含了一个嵌套for循环,之中退出条件为 i=0 && j==8 时,则跳转出整个循环;如换为continue则为:
gotoout:for(var i:int = 0; i < 10; i++)
  {   
   for(var j:int = 0; j < 10; j++)
   {    
    if((i==0)&& (j==8)){
     trace("跳过第i:" + i + "  j:" + j +"次循环");
     continue gotoout;
    }
    else
    {
     trace("i:" + i + ",j:" + j);
    }
   }
   if((i==1))
   {
    break;
   }
  }
/---------
i:0,j:0
i:0,j:1
i:0,j:2
i:0,j:3
i:0,j:4
i:0,j:5
i:0,j:6
i:0,j:7
跳过第i:0  j:8次循环
i:1,j:0
i:1,j:1
i:1,j:2
i:1,j:3
i:1,j:4
i:1,j:5
i:1,j:6
i:1,j:7
i:1,j:8
i:1,j:9

当然也不一定是循环才能使用breank,但continue一定要配合循环使用
break:
trace("1");
gotoout:{
 trace("2");
 trace("3");
 break gotoout;
 trace("4");
 trace("5");
}
/-------
trace("1");
gotoout:{
 trace("2");
 trace("3");
 break gotoout;
 trace("4");
 trace("5");
}

continue:
trace("1");
gotoout:{
 trace("2");
 trace("3");
 continue gotoout;
 trace("4");
 trace("5");
}
/-------
1039: 找不到 continue 语句的目标。

标签也可嵌套使用,但无论嵌套几层,最终跳出哪层标签由 break 标签名 决定的
trace("1");
gotoout:{
 gotoout1:{
  gotoout2:{
   trace("2");
   trace("3");
   break gotoout2;
   trace("4");
   trace("5");
  }
  trace("gotoout1");
 }
 trace("gotoout");
}
/------
1
2
3
gotoout1
gotoout

如break gotoout2 换成 break gotoout ,则程序会直接跳出gotoout标签,不会打印 gotoout1、gotoout。

三:局部变量可当全局变量使用
AS3的代码编译是提交给Flash Play优化后编译,因此会出现在java和C++中不可想象的状况。
for(var i:int =1; i<=3; i++)
{
 var str:String = "你好,正在循环";
 trace(i + ":循环内:" + str);
}
trace("循环外:" + str);
/-----
1:循环内:你好,正在循环
2:循环内:你好,正在循环
3:循环内:你好,正在循环
循环外:你好,正在循环

可以看到str是在for循环开始后在循环内部声明并赋值的,但在循环结束后在循环外部依然正常使用了str这个变量,这是由于代码在编译过程中编译器将声明前置优化了。
var str:String;
.......

因此无论将var str:String 放在代码块的何处,编译器总会将变量声明优化前置。但为了程序的可维护性,最好还是按照java、C++等语言的严谨写法书写代码。
局部变量虽可随处声明,但注意其赋值的有效性,如:
trace("循环外:" + str);
for(var i:int =1; i<=3; i++)
{
 var str:String = "你好,正在循环";
 trace(i + ":循环内:" + str);
}
/-----
循环外:null
1:循环内:你好,正在循环
2:循环内:你好,正在循环
3:循环内:你好,正在循环

程序在变量未赋值前就使用此变量,虽可编译运行,但最终打印出str的值为null。

四:函数表达式
这一点很像js的匿名函数,可以说完全相同。
var func:Function = function(par:int){
 return par*8;
}
trace(func(8));
/-------
64

声明了类型为Function名为func的变量,此变量的值很怪异,看上去完全是个函数,其实函数本身也是对象,把对象赋值给变量有什么不对呢?虽然java有匿名类、C#也引入了匿名函数,但它们因为的实现方式肯定没有js与as3直观和简洁。匿名函数是由变量记录这个无名函数的内存地址,而外部访问是由变量作为介质的,因此删除变量,等于删除了这个无名函数。但值得注意的是,函数表达式本身的书写方式导致不宜维护,因此如果没有特别需要毋须将函数写为匿名函数。

五:arguments
AS3函数使用中,可以给函数传入一系列的参数,如:
function sub(par1:int,par2:int)
{
.....
}
在这之中,当参数传入函数调用之后,AS3编译器会生成一个名为arguments数组对象,它保存了当前函数传入的参数的值,可以看作参入参数的备份。
function sub(par1:int,par2:int)
{
 par1 = 3;
 par2 = 4;
 var sub1:int = par1 + par2;
 var sub2:int = arguments[0] + arguments[1];
 trace("函数参数之和:" + sub1);
 trace("arguments之和:" + sub2);
}
sub(1,2);
/--------
函数参数之和:7
arguments之和:3

但这个备份数组仅限于参数是按值传递的情况下,如参数是以引用传递则arguments的值会跟着改变。
function sub(par:Array)
{
 par[0] = "jack";
 trace("函数参数:" + par);
 trace("arguments:" + arguments);
}
var arr:Array = new Array(1,2,3);
sub(arr);
/--------
函数参数:jack,2,3
arguments:jack,2,3

另外,arguments有个重要属性:callee,就是call自己。如使用该属性,程序会将arguments所在的当前函数按照callee的赋值再次执行一次
var bool:Boolean = true;
function sub(par:Array)
{
 par[0] = "jack";
 trace("函数参数:" + par);
 trace("arguments:" + arguments);
 if(bool)
 {
  bool = false;
  var arrbak:Array = new Array("开始执行callee",1,1);
  trace("开始执行callee");
  arguments.callee(arrbak);
 }
}
var arr:Array = new Array(1,2,3);
sub(arr);
/--------
函数参数:jack,2,3
arguments:jack,2,3
开始执行callee
函数参数:jack,1,1
arguments:jack,1,1

 

六、重载

一种OOP语言拥有重载特性是很习以为常的事,毕竟任何OOP语言都必须遵循OOP三大特质。有意思的是AS中,重载这样在其他语言司空见惯的特性,在AS3出现以前都是不存在的(不仅AS,javascript、vbScript、ruby等常见脚本语言都不支持,到底是脚本啊 .... ),且AS3的重载说到底也是模拟重载,一种数组变通而已。

1:使用aruments的length属性进行重载

function test(par1:int):void
{
 if(arguments.length == 1)
  trace("重载1");
 else if(arguments.length >1)
  trace("重载2");
 else
  trace("重载3");
}
test(1);
test(1,2);
test(1,2,3);

/--------------------

重载1
重载2
重载2

注意函数test在声明时只声明了 par1:int 一个参数,而在调用时程序连续调用了3次test,并且后两次参数与函数声明不符,多了。但编译器如果运行在标准模式下编译,是不会报错也可以运行的,这样arguments数组会扩大为你传进来参数的个数,如test(1,2,3),arguments长度就是3了,程序中如果需要用到2、3,只能通过arguments[1]/[2]来找到多出的参数。用arguments时,注意编译器一定要运行在标准模式下;参数只能比函数声明多,不能少。

 

2:使用 ...(args) 来传入不同参数。

注意:...(args) ,前面是3点,英文模式下的3点,不多不少。args是传进来参数数组的名称,可以任意。

function test(...args):void
{
 if(args.length == 1)
  trace("重载1");
 else if(args.length >1)
  trace("重载2");
 else
  trace("重载3");
}
test(1);
test(1,2);
test(1,2,3);

/--------------------

重载1
重载2
重载2

 

当使用...args ,在程序中就不能用arguments来获取参数了,取而代之是args。...args 也可以与声明参数一起使用

function test(par1:int,...args):void
{
 if(args.length == 1)
  trace("参数" + par1 + "  重载1  args参数:" + args);
 else if(args.length == 2)
  trace("参数" + par1 + "  重载2  args参数:" + args);
 else
  trace("参数" + par1 + "  重载3  args参数:" + args);
}
test(1,1);
test(1,2,3);
test(1,2,3,4,5);

/---------------------

参数1  重载1  args参数:1
参数1  重载2  args参数:2,3
参数1  重载3  args参数:2,3,4,5

这样也变通模拟了函数重载,args是不需要编译器标准的无论在严谨或标准模式都可运行;args使用后arguments不能使用包括其属性;在给已声明参数赋值后,接下来无论多少个参数编译器都会将其作为数组传给args。

打造动态导航栏:XML与AS3技术实战指南 为了确保XML文档的结构正确性和规范性,我们通常会使用文档类型定义(DTD)来对XML文档进行有效性验证。DTD定义了XML文档的合法构建模块,包括它允许的元素和属性。一个DTD文件通常被包含在XML文件中,或者被外部引用。它可以声明元素类型,属性列表,实体和符号。通过引用DTD,XML解析器可以校验XML文件是否遵循预定义的规则。]>在上述DTD示例中,声明了一个“library”元素,它包含一个或多个“book”元素。 阅读详情

相关推荐

Flash飞机空战游戏开发案例:AS3.0与Flex框架实战

EnterFrame事件是Adobe Flash ActionScript中一个非常重要的事件,它会在每个新的帧开始渲染时触发。这个事件对于创建持续动作效果和实时交互至关重要。EnterFrame事件的触发机制是基于时间轴的,每当时间轴上的帧更新时,该事件就会被触发一次。对于需要实时更新动画和交互的游戏来说,EnterFrame事件提供了一种高效的方式来处理连续的逻辑更新。例如,在一个飞行射击游戏中,飞机的位置可能需要每帧更新以响应玩家的输入。

weixin_42596214的博客 1047

[转记]AS3中的continue和break新用法

AS3中的continue(continue [label])和break(break [label])有了新用法,其中label为可选参数。以下为break的用法示例,而continue的用法与break基本一样。有了这个新用法使得我们在流控制中更加方便了。 [code="java"] function TestLoop(label:String,index:Number):void { ...

hehailin19860604的专栏 518

AS3-SimTouch-Simulator: 测试Flash多点触摸功能的模拟器

在当今的多点触摸技术领域,AS3-SimTouch-Simulator(以下简称SimTouch)已成为开发和测试多点触摸应用的得力工具。本章将对SimTouch进行全景式的介绍,包括它的功能特性和适用场景。AS3的基本语法元素包括变量声明、数据类型、函数定义、控制流语句等。

weixin_42588555的博客 1053

基于IIM-20670和MK20DX128VFM5的高精度运动跟踪系统设计

惯性测量单元(IMU)作为运动跟踪的核心传感器,通过融合加速度计和陀螺仪数据实现姿态解算。IIM-20670作为新一代6DOF IMU芯片,相比传统MPU6050具有更优的温度稳定性和零偏性能,配合ARM Cortex-M4内核的MK20DX128VFM5微控制器,可构建高性价比的运动跟踪系统。在无人机飞控和工业机器人等场景中,SPI接口配置、传感器数据滤波和Mahony算法等关键技术直接影响系统精度。实测表明,该方案在-20°C至60°C环境下可实现±0.5°的静态精度,特别适合农业无人机等户外设备应用。

weixin_30410119的博客 483

A*寻路算法深度解析与AS3实战实现

在A*算法中,每个节点需保存以下核心属性:xy: 表示该节点在网格中的行列坐标;gCost: 从起点到当前节点的实际移动代价;hCost: 启发式估计从当前节点到目标点的距离;fCost: 综合评估值,即;parent: 指向路径回溯时的前驱节点,用于最终重构路径;isWalkable: 布尔值,标识该节点是否可通过;inOpenList: 标记节点所属列表状态,避免重复插入。这些字段共同构成了完整的节点状态模型。

weixin_32312889的博客 817

ubuntu18.04在carla中导入Roadrunner自建的地图

进入Carla根目录下的Import文件夹在Import文件夹下面新建一个文件夹 这里我取名为RoadA进入新建的文件夹,创建json文件,json文件的名字与文件夹名字相同再将从RoadRunner中导出的地图文件夹(map)放入新建的文件夹目录下重点关注.fbx和.xodr文件然后打开新建的json文件添加并修改如下代码name为RoadRunner中导出的地图文件夹名字。

justinyjf的博客 1897

LayaAir引擎学习日志8----AS3语言中Flash Builder中显示文本Hello Layabox(AS3)

本篇采用AS3语言在Flash Builder环境中显示文本Hello Layabox,学完本篇即为完成LayaAir引擎的第一个程序。在学习本篇前务必保证先阅读完:博客之前的Flash Builder的配置的相关文章 第一步 新建项目 步骤一: 打开Flash Builder,在菜单栏里点“文件”,然后选中“新建”点击 “ActionScript项目”,进入创建项目的窗口。 ...

菲菲家的吴先森 2273

DCDC--控制方式(Control Mode)

DCDC反馈控制方式

网始如芯个人博客 1万+

Flash AS3 Study (只为记录一部分东西,到时候会转到新浪博客)

ActionScript 文档: 完整AS3参考 -- 《ActionScript3.0语言和组件参考》 AS3编程学习-- 《ActionScript3.0 编程》   关于ActionScript: ActionScript是Adobe*Flash*Player和Adobe*AIR运行时环境的编程语言。 ActionScript是由Flash Player和AIR中的ActionS

th8226061的专栏 760

AI提示词实战:用EARS语法5步搞定产品需求拆解(附完整案例)

本文详细介绍了如何运用EARS语法将模糊的产品需求进行原子化拆解,转化为清晰、可执行的结构化指令。通过一个完整的自由职业者项目管理工具案例,演示了从原始需求分析到构建增强AI提示词的五步实战流程,帮助产品经理和技术人员实现高效、精准的需求传达与协作。

nokia的博客 1029

EtherCAT APWR报文实战:从站地址配置(0x0010)的初始化流程与报文解析

本文详细解析了EtherCAT APWR报文在从站地址配置(0x0010寄存器)中的初始化流程与实战应用。通过类比物业分配门牌号,生动解释了APWR报文如何高效批量配置从站地址,并深入探讨了0x0010寄存器的特殊作用、初始化步骤及常见问题排查方法。文章结合IgH主站的三从站配置案例,提供了报文解析技巧和调试建议,帮助工程师快速掌握EtherCAT网络配置的核心技术。

weixin_28744423的博客 410

AS3与AS2的差异(简明列表)

以前的程序是 AS2 写的,因为要用到 JSON ,感觉AS3方便些,没想到语言之间的差别不小,以下是遇到的一些问题的整理。 Object 不再是默认类型,无类型变量引入 在 ActionScript 2.0 中,下面的两行代码等效,因为缺乏类型注释意味着变量为 Object 类型: var someObj:Object; var someObj; ...

weixin_33913377的博客 198

obisidian插件之【templater】模板的中文说明书

Templater 是一种模板语言,可让您将变量和函数结果插入到笔记中。它还允许您执行操作这些变量和函数的 JavaScript 代码。使用 Templater,您将能够创建强大的模板来自动执行手动任务。

m0_55795604的博客 1万+

杂谈:如果as3 可以成为一门优秀的后端语言

qis

夏天的树人的专栏 1362

AI影像组学在结直肠癌诊疗中的应用:从特征提取到临床决策

影像组学通过高通量计算从医学影像中提取定量特征,揭示肿瘤内部的微观生物学行为,这些特征反映了纹理异质性、形状不规则度等影像表型。其核心原理在于将图像数据转化为可分析的数字特征,结合机器学习算法进行模式识别,从而实现对疾病状态的精准预测。这一技术的价值在于能够无创、定量地评估肿瘤特性,为精准医疗提供关键支持。在临床实践中,AI驱动的影像组学模型广泛应用于结直肠癌的诊疗全链条,包括肿瘤良恶性鉴别、基因突变预测、治疗反应评估和预后分析等场景。通过整合影像组学特征与临床数据,可以构建预测模型,辅助医生进行更准确的诊

weixin_28295799的博客 409

pytest-bdd封装

简介 pytestbdd主要是用于代码封装 代码封装的好处: 1、提升代码复用率 2、提示测试效率 手工测试–使用框架0代码 流程+数据驱动 产品经理这样的不懂测试的人员–流程驱动 自动化测试–数据驱动 pytest-bdd:流程驱动封装 行为驱动–敏捷开发模式,消除开发/测试对需要了解的歧义 使用方式: 描述需求/用户场景 Feature(需求) Scenario(场景) Given(假设) When(操作步骤) Then(验证,清除) #新建feature 文件之前 需要提取安装支持featrue文.

liao_11的博客 2732

记录一下,AS3反射功能的实现方法

转载请注明:http://blog.youkuaiyun.com/herm_lib/article/details/8500005 AS3的反射功能以前做过一下,过一小段时间就忘记了,查了以前的代码才知道。这次把他记录下来。 反射功能:        根据类型名字,能够生成这个类型的对象;或者        根据某个类型对象,生成新的对象,就是”原型(prototype)"的概念。

daemonh 4032

【软考】系统集成项目管理工程师(一)信息化知识

软考中级——系统集成项目管理工程师备考干货第一章:信息化知识。

商务合作 | 共同学习 | 携手共进 9万+

AS3中读取子对象的四种方法

AS3中读取子对象的四种方法         这段日子在公司实习,学习新语言ActionScript3,遇到过这么一个问题,在容器中获取子对象,大部分的回答都是三种:getChildAt()、getChildByName()、 getObjectsUnderPoint()。但是有时候通过这三种方法很难get到想要的对象...

和产品battle的秃头程序 1386

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

初步阅读tuio.as

tuio.as,as3 上实现多点触摸的支持类。功能是解析 Flosc 发送的内容,产生 as3 上的多点触摸事件(这个类主要是网络传输层的支持,产生 as3 可以处理的事件,但是还没有实现多点触摸。这样的触摸效果再一些更高层的类实现,比如 RotatableScalable.as,处理 tuio.as 产生的事件,然后生成多点旋转、缩放效果)。 这里记录一下 tuio.as 都做了什么。

louzu1的专栏 2803

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

AS3 Socket安全问题

首先先发泄一下我的高兴,超高兴超高兴... .... .. . .. . .. . 今天才找到了这篇好文章,很感谢作者   通过这篇文章,我完全解决了一个AS3 中使用Socket的安全问题. 按照这篇文章这样子做,不用看其他的文章,就解决了,而且很简单. 讲一下我的目标和遇到的问题以及解决的路径: 1、首先这是一个网站,通过点击一个按钮,然后发送命令到终端;(类似点对点的聊天) ...

冰源 218

as400 编程语言c,AS400开发入门.doc

AS400开发入门AS/400开发介绍1.1AS/400应用开发概述31.1.1数据描述规范(DDS data description specification)31.1.2DB2 QUERY MANAGER AND SQL DEVELOPMENT KIT支持的结构化查询语言SQL/40031.1.3APPLICATION DEVELOPMENT TOOLSET/400(ADTS/400)开发...

weixin_36356958的博客 1715

完全解决AS3 中使用Socket的安全问题.

  通过这篇文章,我完全解决了一个AS3 中使用Socket的安全问题.按照这篇文章这样子做,不用看其他的文章,就解决了,而且很简单.讲一下我的目标和遇到的问题以及解决的路径:1、首先这是一个网站,通过点击一个按钮,然后发送命令到终端;(类似点对点的聊天)2、然后我就做了一个类似私聊的功能,把这个功能的代码完全复制到我的项目里面的时候,就出现了这个错误【错误

请移架http://blog.sina.com.cn/u/2765457197 4236

PyO3 性能优化解析:PyBytes::as_bytes() 在 unlimited API 下的内联化改造

本篇文章围绕 PyO3 仓库中一条变更记录([newsfragments/6377.changed.md](https://link.gitcode.com/i/7f31e5606acd007d50c7544d22055f44))展开,深入解析 `PyBytes::as_bytes()` 在 unlimited API 构建下获得的一次性能优化:将两次 Python C API 函数调用替换为直接

gitblog_00472的博客 642

别再用错as.numeric()了!正确提取R因子水平的3种方法

解决R因子类型转换难题,3种方法精准提取因子水平。避免as.numeric()误用导致的数据错误,适用于数据预处理与建模场景。介绍as.character、levels结合numeric及forcats包方案,确保类型正确性。实用技巧值得收藏。

CodeVibe的博客 669
上一篇: 老兄,快来一起过春天!(八)
下一篇: AS3之深层复制
Begin_Game
博客等级 码龄18年 239粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值