即时通讯使用动作脚本3 flash cc 我尝试在函数中使用静态变量,但我遇到一个错误,说你只能为类而不是函数创建静态变量!
我在场景中有无数的对象,每一个都是一个带有我在项目中使用的句柄名称的movieclip! 现在,如果我尝试创建一个新类并在该类中添加我想要的额外变量,然后将我的每个场景对象分配给它,那将花费很长时间和很多变量!对于像c ++这样的语言允许的简单静态变量!
我尝试了几种方法来传递这个问题 1-创建一个Tmovieclip类
package {
import flash.display.MovieClip;
public class TMovieClip extends MovieClip {
public
var _vx: Number = 0;
public
var _vy: Number = 0;
public
function TMovieClip() {
}
}
}
2 - 我用tmovieclip条目声明了一个函数
private function test(tmc: tmovieclip):void
{
}
3-试图像这样调用测试功能
test(mymovieclip);
但是我遇到了另一个错误" 1067:flash.display类型值的隐式强制:MovieClip到不相关的类型TMovieClip"
所以我尝试了别的东西
public function springObjectC(obj: MovieClip, anchorPoint: Point): Boolean
{
if (obj.parent is TMovieClip)
{
trace("i am tmovieclip");
if (obj.x != anchorPoint.x && obj.y != anchorPoint.y)
{
var dx: Number = obj.x - anchorPoint.x;
var dy: Number = obj.y - anchorPoint.y;
var angle: Number = Math.atan2(dy, dx);
var targetX: Number = anchorPoint.x + Math.cos(angle) * _springLength;
var targetY: Number = anchorPoint.y + Math.sin(angle) * _springLength;
TMovieClip(obj.parent)._vx += (targetX - obj.x) * _spring;
TMovieClip(obj.parent)._vy += (targetY - obj.y) * _spring;
TMovieClip(obj.parent)._vx *= _friction;
TMovieClip(obj.parent)._vy *= _friction;
obj.x += TMovieClip(obj.parent)._vx;
obj.y += TMovieClip(obj.parent)._vy;
if (Math.abs(obj.x -anchorPoint.x) < 0.001 && Math.abs(obj.y - anchorPoint.y) < 0.001)
{
obj.x = anchorPoint.x;
obj.y = anchorPoint.y;
return false;
}
else
return true;
}
else
return true;
}
else
{
var tmc: TMovieClip = new TMovieClip();
addChild(tmc);
tmc.addChild(obj);
return true;
}
}
你可以看到我尝试为我的movieclip制作一个tmovieclip父级,以防它没有一个 然后试着计算! 在这种情况下,我没有遇到任何错误!但它仍然无法工作,我不明白为什么!你有没有办法让我在我的函数中使用_vx和_vy就像一个静态变量而没有经历所有这些问题? ,谢谢
基于评论和答案的最新结果:
我并没有真正考虑将 MoiveClip 基类更改为 TMovieClip
但是当有人在评论中提出并且它现在解决了我的问题时我做了!
虽然改变20-30个MovieClip基类需要一些时间!现在它会为我做这个工作