有了这段代码
function someFunction(classParam:Class):Boolean
{
// how to know if classParam implements some interface?
}
Run Code Online (Sandbox Code Playgroud)
即classParam
与IEventDispatcher
界面比较:
someFunction(EventDispatcher) // returns true
someFunction(Object) // returns false
Run Code Online (Sandbox Code Playgroud)
我知道is
操作员不能这样做.但是,有没有办法做到这一点?有没有办法知道一个类是否实现了一些接口?(或者是另一个类的子类?)
可能的解决方案:
A. classParam
使用is
运算符创建对象并使用该对象进行比较.
function someFunction(classParam:Class):Boolean
{
return (new classParam()) is IEventDispatcher
}
Run Code Online (Sandbox Code Playgroud)
B.使用 describeType()
function someFunction(classParam:Class):Boolean
{
var xml:XML = describeType(classParam)
// found "implementsInterface" value in xml and compare to IEventDispatcher
}
Run Code Online (Sandbox Code Playgroud)
有一种方法不使用describeType
或创建new
运营商?
我必须知道按下了什么键,但不需要字符的代码,我想知道当有人按下'A'键时,即使获得的键是'a'或'A',所以其他键都是如此.
我不能使用PyGame或任何其他库(包括Tkinter).只有Python标准库.这必须在终端中完成,而不是图形界面.
不需要字符代码.我需要知道关键代码.
例如:
ord('a') != ord('A') # 97 != 65
someFunction('a') == someFunction('A') # a_code == A_code
Run Code Online (Sandbox Code Playgroud) 在Smalltalk中,有一条消息DoesNotUnderstand
在对象不理解消息时被调用(这是当对象没有发送消息时).
所以,我想知道在python中是否有一个函数可以做同样的事情.
在这个例子中:
class MyObject:
def __init__(self):
print "MyObject created"
anObject = MyObject() # prints: MyObject created
anObject.DoSomething() # raise an Exception
Run Code Online (Sandbox Code Playgroud)
那么,我可以添加一个方法,MyObject
以便知道何时DoSomething
被调用?
PS:抱歉我的英语不好.
请不要标记此重复项。在发布这个之前,我搜索了很多并且浏览了很多帖子。我在科尔多瓦工作。我有一个 android 5.1.1 设备,我正在测试该应用程序。我使用以下代码打开了一个数据库 -
var db = window.sqlitePlugin.openDatabase({name: 'my.db', location: 'default'});
Run Code Online (Sandbox Code Playgroud)
这运行良好,我也可以执行 CURD,但是,我无法在设备上或笔记本电脑上的应用程序文件夹中找到数据库。我没有root设备。也无法在我的应用程序文件夹中找到 /data/data//databases/。
在哪里可以找到数据库文件?
编辑:由于答案我更改了发布的代码.我已经添加了该 Security.allowDomain("*")
行,该行会引发错误.那么,怎么做呢?
我想将Action Script 3.0应用程序运行到Flex应用程序中.为此,我做了以下事情:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication windowComplete="loadSwfApplication()" xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
private function loadSwfApplication()
{
// The next line throws me an error.
Security.allowDomain("*");
var urlRequest:URLRequest = new URLRequest("path/to/the/application.swf");
swfLoader.addEventListener(Event.COMPLETE, loadComplete);
swfLoader.load(urlRequest);
}
private function loadComplete(completeEvent:Event)
{
var swfApplication:* = completeEvent.target.content;
swfApplication.init(); // this is a Function that I made it in the Root class of swfApplication
}
]]>
</mx:Script>
<mx:SWFLoader id="sfwLoader"/>
</mx:WindowedApplication>
Run Code Online (Sandbox Code Playgroud)
问题是在调用swfApplication.init();
AIR Player时会抛出异常:
安全沙箱冲突:调用者文件:///path/to/the/application.swf无法访问app所拥有的阶段:/SWFApplicationLoader.swf.
这是因为application.swf
我在某处使用这样的舞台:
if (root.stage != null)
root.stage.addEventListener(Event.REMOVED, someFunction); …
Run Code Online (Sandbox Code Playgroud) 当你将任何对象转换为布尔值时,true
如果对象不是null
,false
则得到,否则,我喜欢为某些对象更改此行为.我希望有些物体false
即使不存在也会返回null
我知道在ActionScript 3.0中我们可以使用改变对象的一些默认行为Proxy
.我们可以做同样的Boolean(object)
或object as Boolean
?以及如何做到这一点?
我想在下一个想法之后问这个:
我有这个代码:
if (someObject)
someObject.DoSomething();
Run Code Online (Sandbox Code Playgroud)
这意味着DoSomething
只有在someObject
没有被调用的情况下null
,这只是因为背后的"真实"代码是这样的:
if (Boolean(someObject) == true)
someObject.DoSomething();
Run Code Online (Sandbox Code Playgroud)
并且有效,因为任何对象都自动转换为布尔值,结果是true
,但如果引用指向null
结果是false
.
我想知道我是否可以改变这种行为而不添加像这样的新功能isTrue(someObject)
.
在此先感谢,对不起我的英语不好.
我正在使用flash.net.NetStream和flash.media.Video来播放.flv,这里有一些代码:
var stream:NetStream = new NetStream(connection);
//next line is to avoid an error message
stream.client = {onMetaData: function(obj:Object):void {}}
var video:Video = new Video();
video.attachNetStream(stream);
stream.play("url.to/video");
addChild(video);
Run Code Online (Sandbox Code Playgroud)
这播放视频,但是我怎么知道视频从开始到结束的时间?如何知道视频是否播放了它的长度?
PS:抱歉我的英语不好.
我有一个Number类型的变量,我想获得符号(如果是' - '我喜欢-1,如果'+'我想要1).所以,我做了这个:
var sign = Math.abs(n) / n;
Run Code Online (Sandbox Code Playgroud)
但是,还有其他方法吗?比这更好?