actioscript 3.0 调用容器方法,用转换类型
2008-11-09 22:44
369 查看
actioscript 3.0 调用上容器的方法。是一个很有用的操作,不过实现起还有些小决窍,最近的开发中我就碰到了这个问题,最后用了些偏门的东东解决了。在写方法之前,首先谢谢闪闪威廉的帮助,全靠他的指导才得以解决。
首先先贴出错误的代码:
testParen.as代码 这个是文档类代码。
sub.as这是子级容器代码,就是上面addChild(s)的那个。
错误描述
1061: 调用可能未定义的方法 callBack (通过 static 类型 flash.display:DisplayObjectContainer 引用)。
解决方法很容易,转换一下类型就可以解决了。把sub处的this.parent.callBack(); 改为(this.parent as testParent).callBack(); 问题就解决了。
sub修改后的代码如下:
调试,点击黑色的方块就会得出输入代码了。
output:我是父级容器
写成(this.parent as testParent).callBack();有点不好懂,我们换个写法。写成
var temp:testParent=new this.parent as testParent;
temp.callBack();
这样写是不是好看得多了呢?
上面是本人实际应用中碰到的问题,是子级调用父级容器里面的方法。
平时我们写as的时候大多是直接调用容器里的方法。
下面的代码直接调用子级方法,其实实质是一样的。
testParen.as代码 这个是文档类代码。
sub.as代码
首先先贴出错误的代码:
testParen.as代码 这个是文档类代码。
package { import flash.display.Sprite; public class testParent extends Sprite { public function testParent() { var s:sub = new sub(); this.addChild(s); } public function callBack():void{ trace("我是父级容器"); } } }
sub.as这是子级容器代码,就是上面addChild(s)的那个。
package { import flash.display.Sprite; import flash.events.MouseEvent; public class sub extends Sprite { public function sub() { super(); this.graphics.beginFill(0x000000,1); this.graphics.drawRect(0,0,100,100); this.graphics.endFill(); this.addEventListener(MouseEvent.CLICK,cl); } private function cl(e:MouseEvent):void{ this.parent.callBack(); // 问题出在这里,如此访问上级容器出错 } } }
错误描述
1061: 调用可能未定义的方法 callBack (通过 static 类型 flash.display:DisplayObjectContainer 引用)。
解决方法很容易,转换一下类型就可以解决了。把sub处的this.parent.callBack(); 改为(this.parent as testParent).callBack(); 问题就解决了。
sub修改后的代码如下:
package { import flash.display.Sprite; import flash.events.MouseEvent; public class sub extends Sprite { public function sub() { super(); this.graphics.beginFill(0x000000,1); this.graphics.drawRect(0,0,100,100); this.graphics.endFill(); this.addEventListener(MouseEvent.CLICK,cl); } private function cl(e:MouseEvent):void{ (this.parent as testParent).callBack(); // 修改此处,转换类型 } } }
调试,点击黑色的方块就会得出输入代码了。
output:我是父级容器
写成(this.parent as testParent).callBack();有点不好懂,我们换个写法。写成
var temp:testParent=new this.parent as testParent;
temp.callBack();
这样写是不是好看得多了呢?
上面是本人实际应用中碰到的问题,是子级调用父级容器里面的方法。
平时我们写as的时候大多是直接调用容器里的方法。
下面的代码直接调用子级方法,其实实质是一样的。
testParen.as代码 这个是文档类代码。
package { import flash.display.Sprite; import flash.events.MouseEvent; import sub; public class testParent extends Sprite { private var s:sub; public function testParent() { s = new sub(); s.graphics.beginFill(0x000000,1); s.graphics.drawRect(0,0,100,100); s.graphics.endFill(); s.addEventListener(MouseEvent.CLICK,cl); this.addChild(s); } private function cl():void{ var temp:sub=new this.parent as sub; temp.callBack(); } } }
sub.as代码
package { import flash.display.Sprite; public class sub extends Sprite { public function sub() { } public function cl(e:MouseEvent):void{ trace("输出"); } } }
相关文章推荐
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(8):服务器端和客户端数据类型的自动转换:数组类型
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(10):服务器端和客户端数据类型的自动转换:以XML方式序列化数据、小结
- struts2的常量、动态方法调用、接受请求参数处理、类型转换
- Java与JNI类型转换,方法调用
- java强制类型转换后调用方法加括号
- 单表多条件查询,匿名类型,匿名对象,嵌套查询,Linq序列转换后调用外部方法
- jquery里面调用getjson方法,将list类型转换为json格式数据,在页面迭代显示
- 主动从spring获取对象的方法,并且在调用该方法的时候不用强制转换类型
- java梳理-给一个字符串类型的数字,不调用java直接转的API写一个方法转换出来
- Bean第一次从容器获取的时候,如果bean配置了lookup-method,那么就使用了cglib来进行调用方法转换
- C#调用VC DLL接口函数参数类型转换方法介绍
- 一些小工具方法,能将容器转换成指定的数组类型有使用泛型
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(6):服务器端和客户端数据类型的自动转换:复杂类型
- C#调用VC DLL接口函数参数类型转换的方法
- C#调用VC DLL接口函数参数类型转换方法介绍
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法:服务器端和客户端数据类型的自动转换:复杂类型
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(9):服务器端和客户端数据类型的自动转换:DataTable和DataSet
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(10):服务器端和客户端数据类型的自动转换:以XML方式序列化数据、小结
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(6):服务器端和客户端数据类型的自动转换:复杂类型
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(6):服务器端和客户端数据类型的自动转换:复杂类型