如何用C脚本给一个对象的颜色属性编程

如何用C脚本给一个对象的颜色属性编程,第1张

属性的脚本里直接返回值就可以了,return mycolor

#include "apdefap.h"

long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

// WINCC:TAGNAME_SECTION_START

// syntax: #define TagNameInAction "DMTagName"

#define tag_0 "mycolor1"

// next TagID : 1

// WINCC:TAGNAME_SECTION_END

// WINCC:PICNAME_SECTION_START

// syntax: #define PicNameInAction "PictureName"

// next PicID : 1

// WINCC:PICNAME_SECTION_END

long int mycolor,i

//char* name

i=GetTagDWord("tag_0")//Return-Type: DWORD

if(i==1)

mycolor=0x000000FF

else

mycolor=0x0000FF00

//name=lpszPropertyName

//SetTagDWord(name,mycolor)//Return-Type: BOOL

//return *name

return mycolor

}

associatedObject又称关联对象。顾名思义,就是把一个对象关联到另外一个对象身上。使两者能够产生联系。

这样我们就可以通过associatedObject在运行时给cagetory添加getter和setter。因为category中添加的property不会生成带下划线"_"的成员变量以及getter和setter的实现。所以可以通过关联对象实现getter和setter。

objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)

参数一:id object : 给哪个对象添加属性,这里要给自己添加属性,用self。

参数二:void * == id key : key值,根据key获取关联对象的属性的值,在objc_getAssociatedObject中通过次key获得属性的值并返回。

参数三:id value : 关联的值,也就是set方法传入的值给属性去保存。

参数四:objc_AssociationPolicy policy: 策略,属性以什么形式保存。

objc_getAssociatedObject(id object, const void *key)

参数一:id object : 获取哪个对象里面的关联的属性。

参数二:void * == id key : 什么属性,与objc_setAssociatedObject中的key相对应,即通过key值取出value。

总结:

关联对象并不存储在被关联对象本身内存中,而是有一个全局统一的 AssociationsManager中

一个实例对象就对应一个ObjectAssociationMap,

而ObjectAssociationMap中存储着多个此实例对象的关联对象的key以及ObjcAssociation,

ObjcAssociation中存储着关联对象的value和policy策略

假设有对象objece;

var object = function(){

    this.a = 1

    this.b = 2

}

然后我 var obj1 = new object()

这里的obj1就是对象,给对象obj1加一个属性 obj1.c = 3;

但是我再var obj2 = new object()这里的obj2并没有c这个属性

但是我通过原型的方式加属性c; object.prototype.c = 3;

那么我var obj3 = new object()

obj3就有c这个属性

望采纳!


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11824433.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存