gpt4 book ai didi

javascript - 从xml创建GUI时出现问题->奇怪的CPButton行为

转载 作者:行者123 更新时间:2023-12-03 13:38:27 25 4
gpt4 key购买 nike

哈o

我是Objective-J和 Cappuccino 的新手,只是尝试创建一个
小型应用程序,可从xml文件动态创建gui。

不幸的是,它仅部分起作用。看来按钮
地区是困惑的。这意味着,按钮也会在以下情况下响应
我单击按钮旁边。

请帮我。我不明白..

- (void)applicationDidFinishLaunching:(CPNotification)aNotification
{

mControlList = [CPArray alloc];

theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero()
styleMask:CPBorderlessBridgeWindowMask],
contentView = [theWindow contentView];
[contentView setFrame:[[contentView superview] bounds]];
[contentView setAutoresizingMask:CPViewWidthSizable |
CPViewHeightSizable];


// Loadxmlfile
var xhttp;
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest()
}
else
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP")
}
xhttp.open("GET","test.xml",false);
xhttp.send("");
xmlDoc = xhttp.responseXML;

//Get controls nodeand iterate through all controls
var node = xmlDoc.getElementsByTagName("controls")[0];
for (var i=0; i<node.childNodes.length; i++) {
if(node.childNodes[i].nodeName=="button"){
var item = node.childNodes[i];

var name = item.attributes["name"].nodeValue;
var text = item.getElementsByTagName("text")
[0].childNodes[0].nodeValue;
var x= item.getElementsByTagName("rect")
[0].attributes["x"].nodeValue;
var y= item.getElementsByTagName("rect")
[0].attributes["y"].nodeValue;
var width= item.getElementsByTagName("rect")
[0].attributes["width"].nodeValue;
var height= item.getElementsByTagName("rect")
[0].attributes["height"].nodeValue;

var b = [[Button alloc] InitWithParent:contentView Text:text X:x
Y:y Width:width Height:height];
[mControlList addObject:b];
}
}

[theWindow orderFront:self];

}
@implementation Button : CPObject
{
CPButton _button;
}

- (Button)InitWithParent:(CPView)contentView Text:(CPString)text X:
(int)x Y:(int)y Width:(int)width Height:(int)height
{
_button = [[CPButton alloc] initWithFrame:
CGRectMake(x,y,width,height)];
[_button setTitle:text];
[_button setTarget:self];
[_button setAction:@selector(cmdNext_onClick:)];
[contentView addSubview:_button];
return self;
}

- (void)cmdNext_onClick:(id)sender
{
}
@end

最佳答案

Cappuccino 为您免费提供大部分此功能。

您可以使用CPURLConnection加载文件。

另外Atlas(或Interface Builder和nib2cib)将自动为您创建cib文件,Cappuccino本身已经知道如何从cib文件构建UI。

如果您确实想实现自己的系统来执行此操作,能否请您提供要加载的实际XML?也可以尝试在不使用XML的情况下加载按钮。例如:

var myButton = [CPButton buttonWithTitle:@"My Cool Button"];
[contentView addSubview:myButton];
+ buttonWithTitle:将在初始化的按钮上自动调用 - sizeToFit,因此您可以将其添加到contentView中,并以适当的大小显示。

关于javascript - 从xml创建GUI时出现问题->奇怪的CPButton行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2751668/

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