请看这里的小提琴:http://jsfiddle.net/mYdm9/4/
在我的电脑上,做
ctx.lineWidth=20;
ctx.setLineDash([20,30]);
ctx.lineDashOffset=10;
ctx.beginPath();
ctx.moveTo(150,150);
ctx.lineTo(240,240);
ctx.lineTo(180,40);
ctx.stroke();
ctx.closePath()
Run Code Online (Sandbox Code Playgroud)
给出第一组线,带有所需的破折号/偏移量
现在用
ctx.setLineDash([0,0]);
ctx.lineDashOffset=0
Run Code Online (Sandbox Code Playgroud)
在下一批命令中:
ctx.beginPath();
//resets line dash... except on iOS Safari it seems...
ctx.setLineDash([0,0]);
ctx.lineDashOffset=0;
ctx.moveTo(0,300);
ctx.lineTo(0,250);
ctx.lineTo(100,400);
ctx.lineTo(200,300);
ctx.stroke();
ctx.closePath()
Run Code Online (Sandbox Code Playgroud)
在第一组线之后似乎重置任何破折号属性.再次获得实线
在运行Safari的iPad2上......它似乎完全被忽略了,线条保持虚线.为什么是这样?还有,还有其他方法来正确重置行破折号......?(最好是跨浏览器/操作系统)
谢谢
我已经在Stack Overflow上阅读了几个星期的问题......这将是我的第一个问题.
所以最近我研究了C访问/操作C++类.我理解理想情况下,在正常情况下,不应该单独用C和C++编译组件,但目前这不是一个选项.
我查看了有关能够在C中移植/使用C++的3个教程.它们是:
DevX上的 "C++和C互操作性指南"
Sun网站上的 "在同一程序中混合使用C和C++代码"一文.
"[32]如何在Parashift上混合使用C和C++"
首先,我已经知道:
您必须使用extern"C"来避免C++函数名称重整.
您需要与C兼容的回调原型.
G ++必须将C++编译成.o文件,GCC将特定于C的代码编译成.o文件,然后将它们链接起来.
结果,我的项目由4个文件组成:
这是我输入的代码,然后是我的问题:
foo.h中
// Header File foo.h
#ifndef FOO_H
#define FOO_H
//Content set inside this #ifdef will be unseen by C compilers
#ifdef __cplusplus
class Foo
{
public:
void setBar(int);
void printBar();
private:
int bar;
};
#endif
//end of C++-only visible components.
#ifdef __cplusplus
extern "C" {
#endif
//Stuff made to be seen by C compilers only. …Run Code Online (Sandbox Code Playgroud)