由于这里的答案,我拥有了当前的设置。如何根据是否按下父按钮禁用子按钮?例如,Button2当前被禁用,但当我按下Button1时,我现在可以按下Button2,如果我按下Button2,Button3和Button4将被启用,现在可以按下。到目前为止,我的做法如下:声明一个布尔值:
boolean Enable = false;
单击按钮时将Enable从false更改为true:
if (type.equals(TAG_ENTITY_ATTRIBUTE_VALUE_GAMEBUTTON1)) {
levelObject = new ButtonSprite(x, y, resourcesManager.gamebutton1_region, resourcesManager.gamebuttonpressed_region, vbom, new OnClickListener() {
@Override
public void onClick(ButtonSprite pButtonSprite, float pTouchAreaLocalX, float pTouchAreaLocalY) {
Enable = true;
}
});
}
禁用除第一个按钮外的所有其他按钮,并且在按下按钮之前,由于“启用”仍然为false,因此应禁用其他按钮:
if (ButtonSpriteID != 1) {
levelObject.setEnabled(Enable);
levelObject.setColor(Color.BLACK);
}
最后,如果子项的id与父项的子项id匹配,则在按下按钮时应启用该按钮,因为此时应将Enable设置为true:
for (int k = 0; k < ButtonSpriteChild.length; k++){
if (ButtonSpriteChild[k] == ButtonSpriteID){
levelObject.setEnabled(Enable);
levelObject.setColor(Color.WHITE);
}
}
我在运行代码时没有遇到错误,但似乎没有一个像我预期的那样工作。所以任何帮助都会很好。
if (ButtonSpriteID != 1) {
levelObject.setEnabled(false);
levelObject.setColor(Color.BLACK);
}
levelObject.setOnClickListener(new OnClickListener() {
@Override
public void onClick(ButtonSprite pButtonSprite, float pTouchAreaLocalX, float pTouchAreaLocalY) {
for (int k = 0; k < ButtonSpriteChild.length; k++){
if (ButtonSpriteChild[k] == ButtonSpriteID){
levelObject.setEnabled(true);
levelObject.setColor(Color.WHITE);
}
}
}
});
还是不行。有人建议我重写onTouchedArea,但我不确定我将如何实现它。
if (levelObjects.get(j).isPressed()) {
levelObjects.get(i).setEnabled(true);
levelObjects.get(i).setColor(Color.WHITE);
}
还是不行。还在寻求帮助。
for (final ButtonSprite buttonSprite : levelObjects) {
if (ButtonSpriteID != 1) {
buttonSprite.setEnabled(false);
buttonSprite.setColor(Color.BLACK);
}
buttonSprite.setOnClickListener(new OnClickListener() {
@Override
public void onClick(ButtonSprite pButtonSprite, float pTouchAreaLocalX,
float pTouchAreaLocalY) {
for (int k = 0; k < ButtonSpriteChild.length; k++){
if (ButtonSpriteChild[k] == ButtonSpriteID){
buttonSprite.setEnabled(true);
buttonSprite.setColor(Color.WHITE);
}
}
}
});
}
还是不行,需要帮忙吗?拜托?
levelObjects.get(j).setOnClickListener(new OnClickListener() {
@Override
public void onClick(ButtonSprite pButtonSprite, float pTouchAreaLocalX,
float pTouchAreaLocalY) {
for (int k = 0; k < ButtonSpriteChild.length; k++){
if (ButtonSpriteChild[k] == ButtonSpriteID){
levelObjects.get(i).setEnabled(true);
levelObjects.get(i).setColor(Color.WHITE);
}
}
}
});
这不起作用,因为它会给我设置“i”为final的错误,但不能这样做,因为“i”在for循环中。
if (ButtonSpriteChild[k] == ButtonSpriteID){
levelObject.setOnClickListener(new OnClickListener() {
@Override
public void onClick(ButtonSprite pButtonSprite, float pTouchAreaLocalX,
float pTouchAreaLocalY) {
levelObject.setEnabled(true);
levelObject.setColor(Color.WHITE);
}
});
}
还是不行。
if (ButtonSpriteChild[k] == ButtonSpriteID){
levelObject.setOnClickListener(new OnClickListener() {
@Override
public void onClick(ButtonSprite pButtonSprite, float pTouchAreaLocalX,
float pTouchAreaLocalY) {
levelObject.setEnabled(true);
levelObject.setColor(Color.WHITE);
}
});
}
奇怪的事情发生了只有一个按钮/水平对象是有效的,如果按另一个按钮,我按的一些按钮不是该按钮的子或父。
在您创建按钮的XML解析过程中,我们将借此机会仅启用GAMEBUTTON1,禁用所有其他按钮,并调用一个函数在按下按钮时启用所有子级。也就是说,
if (type.equals(TAG_ENTITY_ATTRIBUTE_VALUE_GAMEBUTTON1))
{
final ButtonSprite levelObject = new ButtonSprite(x, y, resourcesManager.gamebutton1_region, vbom, new OnClickListener()
{
@Override
public void onClick(ButtonSprite pButtonSprite, float pTouchAreaLocalX, float pTouchAreaLocalY)
{
//This button sprite has been clicked so lets enable any child sprites
EnableChildButtons(this); //See sub routine later
}
});
//For game button 1, we will enable it,
levelObject.setEnabled(true);
levelObject.setColor(Color.WHITE);
//Hereafter for further buttons, although the rest of the code will be the same
//will be disabled after creation with the following two lines in place of the latter
// levelObject.setEnabled(false);
// levelObject.setColor(Color.BLACK);
}
//...(rest of your code in previous post)
在子程序EnableChildButtons之前,我对levelObjectUserData做了一个修改,替换了孩子ID的int数组,
public int[] ChildID = {-1};
有一份清单,
public List<Integer> ChildIDs = new ArrayList<Integer>();
当调用存储子ID的代码时,只需在代码中使用以下内容,
for (int i = 0;i<childString_id.length;i++)
{
MyData.ChildIDs.add(Integer.parseInt(childString_id[i]));
}
然后我们只需要编写函数,让孩子们,
private void EnableChildButtons(final ButtonSprite mButtonSprite)
{
//To cut down on syntax length get a pointer to the button user data
final levelObjectUserData mUserData = ((levelObjectUserData) (mButtonSprite.getUserData()));
//We will be careful and run this on the update so we do not alter states
//while they are currently being processed by the update thread!
mActivity.runOnUpdateThread(new Runnable()
{
@Override
public void run()
{
//Go through all of the buttons child ids
for (int i = 0;i<mUserData.ChildIDs.size();i++)
{
//Locate the button with that ID as will be refernced in our levelObjects
//linked list
for (int j = 0;j<levelObjects.size();j++)
{
final int ButtonSpriteID = ((levelObjectUserData) (levelObjects.get(j).getUserData())).ID;
if (mUserData.ChildIDs.get(i) == ButtonSpriteID)
{
//We have found a child button, so enable it!
((ButtonSprite) levelObjects.get(j)).setEnabled(true);
((ButtonSprite) levelObjects.get(j)).setColor(Color.WHITE);
}
}
}
}
});
}
希望这有帮助。
我以编程方式生成了许多按钮(一些按钮用于增加值,而另一些按钮用于减少值),当它们调整的值达到最大值或最小值时,我会禁用这些按钮。(即,当达到最大值时,“增加”按钮被禁用,而当达到最小值时,“减少”按钮被禁用。)除了禁用,我还将按钮状态设置为“按下”,以直观地指示已达到极限值,并且按钮不再工作。 我的按钮onClickListener的'增加'按钮看起来像这样: ClickListeners上相应的
问题内容: 单击后,我想在iOS上禁用按钮()。我是开发iOS的新手,但我认为目标上的等效代码-C是这样的: 但是我不能迅速做到这一点。 问题答案: Swift中的布尔值是。 应该做。 这是的属性的Swift文档。
问题内容: 我有这个HTML: 我该如何做这样的事情: 当文本字段为空时,应禁用提交(disabled =“ disabled”)。 在文本字段中键入内容以删除禁用的属性时。 如果文本字段再次变为空(删除了文本),则应再次禁用提交按钮。 我尝试过这样的事情: …但这不起作用。有任何想法吗? 问题答案: 问题在于,仅当焦点从输入移开(例如,有人单击输入或将选项卡移出输入)时,更改事件才会触发。尝试改
这是一个很奇怪的问题,因为我很确定逻辑是正确的,但它仍然不起作用。因此,当GUI启动时,在启动函数中,我对每个按钮、Kbutton、Bbutton等使用以下代码行将大多数按钮设置为灭活:
问题内容: 我想启用/禁用没有jQuery的按钮。这是我的代码: 作品。但这不是-按钮保持禁用状态: 问题答案: 是一个布尔属性,仅它的存在就会导致元素被禁用,无论该属性的值实际是多少。这就是为什么您可以通过将属性设置为来禁用JavaScript中的元素的原因,您可以将其设置为任何值(这就是为什么将其设置为禁用状态的原因)。 在HTML中,您甚至根本不需要为属性设置一个值: 但是,建议使用布尔属性
我正在用javaFX在netbeans中编写一个程序视图中有几个按钮和一些坏按钮(比如炸弹是扫雷舰),我试图在按下坏按钮时冻结程序,但我找不到如何操作 谢谢