小编mat*_*ler的帖子

AS3,垃圾收集和带有监听器的多级Sprite

所有,

我是否创建了一个精灵,并且该精灵包含许多子精灵(它们本身也包含子精灵),我是否需要担心垃圾收集所有东西,或者只是父精灵?如果孩子或孙子精灵有听众怎么办?

例如,假设我有一个类(Sprite的子类),它在应用程序中创建一个屏幕.

该屏幕包含许多精灵,用于屏幕上的所有UI功能(例如,按钮,下拉菜单,文本字段等).许多精灵都有事件监听器.

所以,在我的应用程序中,我有这个:

var myscreen:MyScreenClass = new MyScreenClass();
this.addChild(myscreen);
Run Code Online (Sandbox Code Playgroud)

稍后,当用户完成该屏幕时,我将其删除:

this.removeChild(myscreen);
myscreen = null;
Run Code Online (Sandbox Code Playgroud)

这就是我需要做的吗?或者,我是否需要递归通过myscreen,删除它的所有子Sprite和事件监听器?

换句话说,如果你是GC的父母,那么它们的孩子,孙子孙女,曾孙子等也是GC的吗?

(对于它的价值,我在我的事件监听器中使用弱引用......)

提前致谢!

flash garbage-collection actionscript-3

3
推荐指数
1
解决办法
3094
查看次数

以数学方式转换 SVG 路径中的值以填充 viewBox

所以,假设我有一个如下所示的 SVG:

<svg width="800" height="600" viewBox="0 0 800 600" style="border: 1px solid blue;">
	<path fill="#f00" stroke="none" d="M720 394.5c-27.98 0-51.61-6.96-71.97-18.72-29.64-17.1-52.36-44.37-71.48-75.12-28-45.01-48.31-97.48-71.39-136.52-20.03-33.88-42.14-57.64-73.16-57.64-31.1 0-53.24 23.88-73.31 57.89-23.04 39.05-43.34 91.45-71.31 136.39-19.28 30.98-42.21 58.41-72.2 75.45C195 387.72 171.62 394.5 144 394.5Z"/>
</svg>
Run Code Online (Sandbox Code Playgroud)

如您所见,路径仅占据 SVG(和 viewBox 区域)的一部分。

我想知道如何转换它们填充 viewBox 的路径中的值(本质上是重新缩放和重新定位路径中的值,以便它填充整个 viewBox)。

[更新]

我正在添加一些更多细节...

举个例子 - 假设我从带有这样的 viewBox 的 SVG 开始:0 0 1600 1600

在该 SVG 中,有一条路径占据了从1200,1200到 的区域1500,1400。(即,路径为 300 x 200)。

我希望能够提取该路径,并将其添加到新的 SVG 中,其 viewBox 为0 0 300 200.

为此,d需要相应地修改属性中的值 …

javascript svg viewbox

3
推荐指数
1
解决办法
4548
查看次数

是否可以在jsPDF中使用自定义Google网络字体

我使用jsPDF(https://parall.ax/products/jspdfhttps://github.com/MrRio/jsPDF),以产生一个Web应用程序的动态PDF文件。

它运作良好,但我想弄清楚是否有可能在生成的PDF中使用Google网络字体。

我已经找到了许多与此问题相关的链接(包括关于SO的其他问题),但是大多数链接都已过时,并且似乎没有确定的链接,因此我希望有人阐明这是否/如何进行。

到目前为止,这是我尝试过的尝试,但没有成功:

首先,加载字体,并将其缓存为base64编码的字符串:

var arimoBase64;
var request = new XMLHttpRequest()
request.open('GET', './fonts/Arimo-Regular.ttf');
request.responseType = 'blob';
request.onload = function() {
    var reader = new FileReader();
    reader.onloadend = function() {
        arimoBase64 = this.result.split(',')[1];
    }
    reader.readAsDataURL(this.response);
};
request.send()
Run Code Online (Sandbox Code Playgroud)

接下来,创建pdf doc

doc = new jsPDF({
    orientation: "landscape",
    unit: "pt", 
    format: "letter"
});

doc.addFileToVFS("Arimo-Regular.ttf", arimoBase64);
doc.addFont("Arimo-Regular.ttf", "Arimo Regular", "normal");

doc.setFont("Arimo Regular", "normal");

doc.text("Hello, World!", 100, 100);
doc.save("customFontTest");
Run Code Online (Sandbox Code Playgroud)

保存PDF后-如果在浏览器中查看它-我可以看到自定义字体。但是,如果我使用Adobe Reader或Mac Preview应用查看它,则字体不可见。

我认为这是因为字体是使用浏览器的字体缓存在浏览器中呈现的,但是该字体实际上并未嵌入PDF中,这就是为什么在Adobe Reader中看不到该字体的原因。

所以-有没有办法完成我想做的事情?

javascript jspdf

3
推荐指数
2
解决办法
1796
查看次数

使用openrowset将Excel文件读入临时表; 我该如何引用该表?

我正在尝试编写一个存储过程,将Excel文件读入临时表,然后按下该表中的一些数据,然后将该表中的选定行插入永久表.

所以,它是这样开始的:

SET @SQL = "select * into #mytemptable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database="+@file+";HDR=YES', 'SELECT * FROM [Sheet1$]')"

EXEC (@SQL)
Run Code Online (Sandbox Code Playgroud)

这似乎有用.

但是,如果我尝试这样的事情:

Select * from #mytemptable
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

无效的对象名称'#mytemptable'

为什么#mytemptable不被认可?有没有办法让#mytemptable可以访问存储过程的其余部分?

提前谢谢了!

sql-server temp-tables openrowset

2
推荐指数
1
解决办法
1万
查看次数

PHP5:遍历子节点列表(相当于child_nodes())?

全部,

我有一个看起来像这样的 XML 文档:

<root>
    <profile>
        <childA>
        <childB>
        <childC>
    <profile>
    <blah>
    <blah>
    <foo>
    <bar>
<root>
Run Code Online (Sandbox Code Playgroud)

我希望能够获取“profile”节点,然后遍历它的子节点(“childA”、“childB”等)

到目前为止,我的代码如下所示:

$doc = new DomDocument();
$doc->loadXML(file_get_contents("php://input"));
$profile_node = $doc->getElementsByTagName("profile")->item(0);
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好。$profile_node 有我想要的。

在 PHP4 中,我猜你会做这样的事情:

$childnodes = $profile_node->child_nodes();
foreach ($childnodes as $node) {
    // do something with this node
}
Run Code Online (Sandbox Code Playgroud)

但是,我在 PHP5 中找不到 child_nodes() 的等价物。

由于我对 PHP 几乎是一个菜鸟,因此我非常感谢代码示例,因此我可以看到确切的语法。

php xml

2
推荐指数
1
解决办法
1万
查看次数

Highcharts - 以编程方式"翻转"(反向)Y轴

所有,

我在我正在使用的网络应用程序中使用Highcharts.其中一个要求是用户应该能够单击按钮并"翻转"或反转Y轴.

换句话说 - 当用户单击按钮时 - y轴值应从以下位置翻转:

highest at the top / lowest at the bottom
Run Code Online (Sandbox Code Playgroud)

lowest at the top / highest at the bottom
Run Code Online (Sandbox Code Playgroud)

首次创建图表时 - 可以使用y轴的"反转"属性:

http://api.highcharts.com/highcharts#yAxis.reversed

示例:http://jsfiddle.net/ZgVNS/

但是 - 如果我尝试使用选项对象(例如,在按钮单击时)使用JavaScript以编程方式执行此操作,则它似乎不起作用:

chart.options.yAxis.reversed = !chart.options.yAxis.reversed;
chart.redraw();
Run Code Online (Sandbox Code Playgroud)

这是我设置测试的jsfiddle:http://jsfiddle.net/4JZxS/6/

这可能吗?

提前致谢!

html javascript highcharts

2
推荐指数
1
解决办法
2861
查看次数

使用 CSS 转换为 SVG 元素的位置设置动画

我想使用 CSS 转换来为 SVG 元素的位置设置动画。

但是 - 看起来这适用于某些 SVG 元素(例如,rect),但不适用于其他元素(例如文本):

document.querySelector("button").onclick = function() {
  var x = Math.random() * 450;
  document.querySelector("rect").setAttributeNS(null, "x", x);
  document.querySelector("text").setAttributeNS(null, "x", x);
}
Run Code Online (Sandbox Code Playgroud)
rect {
  transition: all 700ms ease-in-out;
}

text {
  transition: all 700ms ease-in-out;
}
Run Code Online (Sandbox Code Playgroud)
<svg width="500" height="100">
  <rect x="100" y="10" width="30" height="30" fill="blue" stroke="none"/>
  <text x="100" y="80" fill="red" stroke="none">Hello</text>
</svg>
<br>
<button>animate</button>
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?有一个更好的方法吗?(理想情况下,不使用 JavaScript 或像 GreenSock 这样的库)。

html javascript css svg

2
推荐指数
1
解决办法
3319
查看次数

一般编码最佳实践 - 我应该使用更多代码还是更多变量?(Flash AS3,或一般)

所有,

我是一名自学成才的程序员 - 而不是CS毕业生 - 所以我可能会经常忽略数百种编码最佳实践.

无论如何,这是一个普遍的问题......

编码时,使用更多代码或更多变量(或数组,散列等)来实现逻辑是否更好?

这是一个模糊的问题,但这里有一个特定的"例如..."

我正在为RIA构建UI; 其中一个可供选择的是一行中的一系列小点 - 每个点都是可点击的,并且用作导航,允许用户选择不同的屏幕.

(想想iPhone中可以切换屏幕的主屏幕底部的点,或者此页面上的图像切换器导航:http://www.apple.com/ipad/)

无论如何,我已经将这个"点导航控件"实现为自定义的Sprite子类.当用户单击一个点时,该类将一个自定义事件调度到包含与所点击的点对应的索引值(uint)的侦听器(例如,"0"是第一个点,"n-1"是第n个点).

现在,在监听器中,我需要采取行动 - 将用户导航到相应的页面.所以,一个明显的选择:

private function dotClicked(e:customDotEvent):void {
    // e.target.index contains the index of the dot clicked
    switch (e.target.index) {
        case 0:
            // navigate the user to the screen that corresponds to dot 0
            loadScreen("home");
            ....
            break;
        case 1:
            // navigate the user to the screen that corresponds to dot 1
            loadScreen("about");
            ....
            break;
        ....
        case n:
            // navigate the user to …
Run Code Online (Sandbox Code Playgroud)

flash coding-style actionscript-3

1
推荐指数
1
解决办法
1266
查看次数

与自己编写JavaScript相比,jQuery有哪些优点?

可能重复:
我什么时候应该使用javascript框架库?

所有,

我是网络应用程序开发的新手.

最近,我制作了一些专门针对iPad和iPhone的HTML5应用程序.

我注意到,很少人似乎使用直接的JavaScript - 几乎每个人都用了jQuery(原型,YUI,MooTools的,等等似乎有点不太流行).

如果我刚开始 - 我应该使用jQuery吗?或者,我会更好地编写自己的JavaScript吗?

一般来说 - 我更喜欢使用尽可能多的"我自己的"代码.如果我可以避免使用框架,我会感到很不舒服 - 我觉得它让我无法理解"引擎盖下发生了什么".

(当然 - 即使我使用的是直接的JavaScript - 引擎盖下有许多级别"(例如,浏览器的JavaScript引擎,操作系统,内核等),我不明白,但是级别越低明白,就更好了.)

我可以想到的唯一具体优势是不使用jQuery ...加载整个jQuery框架,当我只需要它的一些功能时 - 似乎是不必要和浪费的.

所以 - 总的来说 - 我会更好地为每个项目创建我自己的,高度定制的,特定于应用程序的JavaScript吗?

或者 - 我应该咬紧牙关,克服我不愿意使用别人的代码,并使用jQuery?除了不必创建自己已经由其他人编写的函数版本之外,它是否有优势?

例如,它的功能是否以某种方式优化或比我自己生产的更有效?

[UPDATE]

到目前为止答案中常见的主题之一... jQuery消除了担心浏览器差异的需要.好点子.

就我而言,我正在为iPhone,iPad和Android专门编写应用程序.据我所知 - 浏览器非常一致.IE6,7和8的变幻莫测和特性似乎并不适用.真的吗?如果是这样,它是否消除了使用jQuery的主要原因?

另一个关键问题是... jQuery非常受欢迎,它很可能已经存在于用户的缓存中,从而无需加载它.真的......但这是唯一的表现吗?换句话说......作为jQuery一部分的数百个函数的存在是否影响了我的页面的性能?(我不知道JavaScript引擎是如何工作的,所以我不知道是不是这样......).

非常感谢您的建议和指导.

javascript jquery

1
推荐指数
1
解决办法
4990
查看次数

Perl正则表达式删除XML中的节点

我有一个大的(> 2gb)XML文件,看起来大致如下:

<record id="1">
    <a>
        <detail>blah</detail>
        ....
        <detail>blah</detail>
    </a>
    <b>
        <detail>blah</detail>
        ....
        <detail>blah</detail>
    </b>
    <c>
        <detail>blah</detail>
        ....
        <detail>blah</detail>
    </c>
</record>
...
<record id="999999">
    <a>
        <detail>blah</detail>
        ....
        <detail>blah</detail>
    </a>
    <b>
        <detail>blah</detail>
        ....
        <detail>blah</detail>
    </b>
    <c>
        <detail>blah</detail>
        ....
        <detail>blah</detail>
    </c>
</record>
Run Code Online (Sandbox Code Playgroud)

但是,我的实际文件没有每个节点的换行符(尽管在整个过程中随机散布了一些换行符.)

我想使用Perl删除每个节点<b>中的所有 <record>节点,包括它们的后代.

所以 - 我的结果文件看起来像这样:

<record id="1">
    <a>
        <detail>blah</detail>
        ....
        <detail>blah</detail>
    </a>
    <c>
        <detail>blah</detail>
        ....
        <detail>blah</detail>
    </c>
</record>
...
<record id="999999">
    <a>
        <detail>blah</detail>
        ....
        <detail>blah</detail>
    </a>
    <c>
        <detail>blah</detail>
        ....
        <detail>blah</detail>
    </c>
</record> …
Run Code Online (Sandbox Code Playgroud)

regex xml perl

0
推荐指数
1
解决办法
525
查看次数