我正在使用a RotateAnimation
来旋转我在Android中用作自定义循环微调器的图像.这是我的rotate_indefinitely.xml
文件,我放入res/anim/
:
<?xml version="1.0" encoding="UTF-8"?>
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:duration="1200" />
Run Code Online (Sandbox Code Playgroud)
当我将它应用于我的ImageView
使用时AndroidUtils.loadAnimation()
,效果很好!
spinner.startAnimation(
AnimationUtils.loadAnimation(activity, R.anim.rotate_indefinitely) );
Run Code Online (Sandbox Code Playgroud)
一个问题是图像旋转似乎在每个周期的顶部暂停.
换句话说,图像旋转360度,暂停,然后再旋转360度等.
我怀疑问题是动画是使用像android:iterpolator="@android:anim/accelerate_interpolator"
(AccelerateInterpolator
)的默认插值器,但我不知道如何告诉它不插入动画.
如何关闭插值(如果这确实是问题)以使我的动画循环顺利进行?
我正在编写一个简单的WinForms应用程序,我允许用户在TreeView控件中拖动TreeNodes.我强制执行的规则之一是不允许用户将TreeNode拖动到其自己的子节点之一.我以递归样式编写了以下函数来检查目标节点的父级.在编译时,我得到错误,并非所有代码路径都返回此函数的值.据我所知,我对这个逻辑的每个可能的分支都有一个回复声明......但我显然是错的.请有人指出我的错误.
private bool IsDestinationNodeAChildOfDraggingNode(TreeNode draggingNode, TreeNode destinationNode) {
if (draggingNode.Nodes.Count == 0)
return false;
else {
if (draggingNode.Nodes.Contains(destinationNode))
return true;
else {
foreach (TreeNode node in draggingNode.Nodes)
return IsDestinationNodeAChildOfDraggingNode(node, destinationNode);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在处理一个大型应用程序的线程问题(获得跨线程异常).有没有办法找到创建特定控件的线程名称/ ID?
当我尝试将新控件添加到控件的控件集合时,会发生错误.我不能真正创建一个小的,可重复的样本,所以我会尽可能地描述它.
我有一个位于表单上的主控件,称之为_mainControl.在它的构造函数中,我实例化了另一个控件的实例,例如
ChildControl _childControl = new ChildControl();
Run Code Online (Sandbox Code Playgroud)
现在_childControl存在但我还没有将它添加到_mainControls集合中.
最终,_mainControl会收到一个我应该添加控件的事件通知.在事件处理程序中,我检查是否.InvokeRequired,如果是,我调用处理程序,如下所示:
AddControlEventHander(...)
{
if(InvokeRequired)
{
BeginInvoke(new MethodInvoker(AddControlEventHander);
return;
}
Controls.Add(_childControl);
}
Run Code Online (Sandbox Code Playgroud)
Controls.Add总是抛出异常("跨线程操作无效:从创建它的线程以外的线程访问控件'_item').
现在,我不明白这是怎么回事.我在创建_mainControl的同一个线程上创建了_childControl.当我在调试时查看线程窗口时,当我调用Control.Add时,当添加_childControl时,当前线程名称/ id是相同的.但是,让我最困惑的是来自_mainControl的以下调用:
InvokeReuqired == false;
_childControl.InvokeRequired == false;
_childControl._item.InvokeRequired == true; //I made _item public just to try this and it returns true!
Run Code Online (Sandbox Code Playgroud)
怎么可能?_childControl是否有可能在一个线程上创建,而其子项以某种方式在另一个线程上创建?所有_childControl的子节点都是在初始化期间创建的,正如通常所做的那样.
如果有人对可能发生的事情有任何提示/建议,请告诉我.
谢谢.
编辑:
如果有人有兴趣,我会发现发生了什么.我很好奇如何在一个线程上创建一个控件,并且它是在另一个线程上创建的子节点,即使InitializeComponent都是在同一个线程上完成的.所以,我发现了使用类似于Charles建议的代码创建孩子的线程.一旦我知道了,我至少知道要关注哪个主题.然后我打破了子控件的OnHandleCreated事件并找到了问题.
我不知道的一件事是控件的句柄是在控件首次可见时创建的,而不是在创建控件时创建的.因此,没有控件的线程试图将其可见性设置为true.所以我添加了一个检查以查看InvokeRequired并认为这样做会有所帮助.但是,我真的没想到的是调用InvokeRequired会创建控件的句柄(如果它还没有创建)!这实际上导致在错误的线程上创建控件,并且始终为InvokeRequired返回false.我通过触摸控件的Handle属性来解决这个问题,以便在调用InvokeRequired之前创建它.
谢谢你的帮助:)
你能解释一下JavaScript中封装的匿名函数语法背后的原因吗?为什么这样做:(function(){})();
但这不是:function(){}();
?
在JavaScript中,可以创建一个这样的命名函数:
function twoPlusTwo(){
alert(2 + 2);
}
twoPlusTwo();
Run Code Online (Sandbox Code Playgroud)
您还可以创建匿名函数并将其分配给变量:
var twoPlusTwo = function(){
alert(2 + 2);
};
twoPlusTwo();
Run Code Online (Sandbox Code Playgroud)
您可以通过创建匿名函数来封装代码块,然后将其包装在括号中并立即执行:
(function(){
alert(2 + 2);
})();
Run Code Online (Sandbox Code Playgroud)
这在创建模块化脚本时非常有用,可以避免使当前作用域或全局作用域混乱,并且可能存在冲突的变量 - 例如Greasemonkey脚本,jQuery插件等.
现在,我理解为什么会这样.括号包含内容并仅公开结果(我确定有更好的方法来描述),例如with (2 + 2) === 4
.
但我不明白为什么这也不起作用:
function(){
alert(2 + 2);
}();
Run Code Online (Sandbox Code Playgroud)
你能解释一下吗?
我需要这个XML,
<list columns="3">
<item>martin</item>
<item>donald</item>
<item>whistler</item>
<item>mother</item>
<item>carl</item>
<item>liz</item>
<item>cosmo</item>
</list>
Run Code Online (Sandbox Code Playgroud)
看起来像这样:
<table>
<tr>
<td>martin</td>
<td>donald</td>
<td>whistler</td>
</tr>
<tr>
<td>mother</td>
<td>carl</td>
<td>liz</td>
</tr>
<tr>
<td>cosmo</td>
<td></td>
<td></td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
什么时候columns="4"
,它应该是这样的:
<table>
<tr>
<td>martin</td>
<td>donald</td>
<td>whistler</td>
<td>mother</td>
</tr>
<tr>
<td>carl</td>
<td>liz</td>
<td>cosmo</td>
<td></td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
有关XSLT文件应该是什么样子的任何提示?我可以说,它需要某种循环(递归?),但我不确定是否有更优雅的方式.
我正在寻找有关如何使用Cookie最好地将身份验证与PHP结合使用的提示和想法.
每个php脚本是否应该检查cookie值以确定用户是否仍然登录?是否应该有一个脚本执行此检查并包含来自其他每个脚本的脚本?php可以从文件系统的不同深度看到cookie值吗?
喜欢:blahblahblah.com/和blahblahblah.com/login/
他们都可以读取cookie吗?
一篇文章有很多问题,但谢谢!
考虑到这个JavaScript"类"定义,这是我能想到的最好的方法来解决这个问题:
var Quota = function(hours, minutes, seconds){
if (arguments.length === 3) {
this.hours = hours;
this.minutes = minutes;
this.seconds = seconds;
this.totalMilliseconds = Math.floor((hours * 3600000)) + Math.floor((minutes * 60000)) + Math.floor((seconds * 1000));
}
else if (arguments.length === 1) {
this.totalMilliseconds = hours;
this.hours = Math.floor(this.totalMilliseconds / 3600000);
this.minutes = Math.floor((this.totalMilliseconds % 3600000) / 60000);
this.seconds = Math.floor(((this.totalMilliseconds % 3600000) % 60000) / 1000);
}
this.padL = function(val){
return (val.toString().length === 1) ? "0" + val : val;
}; …
Run Code Online (Sandbox Code Playgroud) 我正在寻找使用专用Java服务器和iphone客户端以及Java桌面客户端构建的实时游戏.Java和iphone(特别是可靠的UDP)存在哪些可用于实时多人游戏开发的高性能网络传输库?
大多数基于实时动作的游戏(Counter-Strike,Left4Dead,Quake III)的一般建议是使用UDP/IP传输协议发送消息作为"不可靠"的数据包,支持TCP的"保证"传送(因为问题)有重发和延迟问题,你不能轻易控制).
Project Darkstar是一个带有C++绑定的Java MMO服务器(对于通用多人游戏的轻量级实时网络库来说有点重).
我见过用C语言编写的可靠UDP库: - Enet - 可靠的UDP库 - Cocoa AsyncSocket
我正在使用Django加载JSON字符串simplejson
,因此:
obj = json.loads('{"name": "joe"}')
person = obj.name
Run Code Online (Sandbox Code Playgroud)
这会引发错误:
'dict' object has no attribute 'name'
Run Code Online (Sandbox Code Playgroud)
但是当我传递obj
给视图模板并通过{{ obj.name }}
它打印出来时,它可以工作!为什么?
c# ×2
javascript ×2
android ×1
animation ×1
compilation ×1
cookies ×1
django ×1
php ×1
python ×1
real-time ×1
simplejson ×1
syntax ×1
udp ×1
url ×1
url-encoding ×1
view ×1
xml ×1
xslt ×1