gpt4 book ai didi

actionscript-3 - 在链中设置多个对象变量?

转载 作者:行者123 更新时间:2023-12-04 02:43:43 24 4
gpt4 key购买 nike

这是一个非常基本的问题,我确信在某处有答案,但我终究找不到答案。无论如何,我有很多对象的新实例的变量要更改,主要是为了好玩,我想我会尝试缩短语法或将它们链接在一起。但我不能。下面是一些示例代码:

var text = new TextObjectThing(0, 0, 500, "Text");
text.color = 0xFFFFFFFF;
text.size = 26;
text.scrollFactor.x = 0;
text.scrollFactor.y = 0;

如您所见,您必须多次执行“text.property”操作。这在实际意义上很好,但我只是想知道是否有人知道如何重新组织一下。

编辑:我想如果您出于某种原因想要/需要拥有一个匿名对象,这将很重要。如果它是匿名的,则不能像那样设置这些变量。

最佳答案

你可以在不修改你的对象的情况下使用一个技巧来链式调用:

var shape : Shape = new Shape;
// Chain property init
Initializer.init(shape).x(100).y(100).alpha(.5);

// Chain function call
Initializer.init(shape.graphics).beginFill( 0xFF0000 ).drawCircle( 100, 100, 50).endFill().beginFill( 0xFFFFFF ).drawCircle( 100, 100, 10).endFill();

addChild(shape);

初始化类:

package
{
import flash.utils.Proxy;
import flash.utils.flash_proxy;

public dynamic class Initializer extends Proxy
{
// To avoid new instance
private static var _instance : Initializer = new Initializer(null);;

// Current target Object
private var _target : Object;

// Constructor
public function Initializer(target : Object){
_target = target;
}

// Call it to avoid new Initizer instance
public static function init(target : Object) : Initializer{
_instance._target = target;
return _instance;
}

// Catch function call and return initializer to chain call
override flash_proxy function callProperty(name:*, ... rest):* {
if(_target)
{
// Emulate function setter
if(_target.hasOwnProperty(name) && !(_target[name] is Function))
_target[name] = rest[0];

// If not a property, call as a classic function
else
_target[name].apply(_target, rest);
}
return this;
}
}
}

这只是为了好玩,因为代理调用为每次调用增加了非常小的时间,如果您想非常频繁地使用它(例如:每帧 10000 次),使用经典方法会更快。

您还可以使用“with”关键字(请注意构造函数后的 ; 字符):

var tf : TextField = new TextField(); with(tf) {
text = "Hello";
alpha = .5;
setTextFormat( new TextFormat( "Verdana", 16, 0xFF0000) );
}

或者当值相同时链:

var text = new TextObjectThing(0, 0, 500, "Text");
text.scrollFactor.x = text.scrollFactor.y = 0;

关于actionscript-3 - 在链中设置多个对象变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19313628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com