真的进入Web开发,尤其是JS,所以我想知道JS文件组织和职责委派方面的最佳实践是什么.我问这个是因为我有这种结构是有意义的:
虽然这对我有意义,但我想知道我的观点是否错误,考虑到你不能自然地将JS文件包含到另一个中,除非你做了几个技巧(不,不是在讨论jQuery).技巧可能意味着这不仅仅是因为它不适合语言的最佳实践,但在跨域问题方面并非总是如此.因此,在我深入研究草率设计之前,我只是好奇你们是如何分担责任的,或者只是将所有内容整合到一个文件中.
即使我将发送到我的浏览器的网址复制并粘贴,我也会一直获得0的状态,我得到了一个json对象
<?php
$mainUrl = "https://api.xxxx.com/?";
$co = "xxxxx";
$pa = "xxxx";
$par = "xxxx";
$part= "xxxx";
$partn = "xxxx";
$us= "xxx";
$fields_string;
$fields = array(
'co'=>urlencode($co),
'pa'=>urlencode($pa),
'par'=>urlencode($par),
'part'=>urlencode($part),
'partn'=>urlencode($partn),
'us'=>urlencode($us)
);
foreach($fields as $key=>$value) { $fields_string .= $key . '=' . $value . '&' ;}
$fields_string = rtrim($fields_string, "&");
$fields_string = "?" . $fields_string;
$url = "https://api.xxxxx.com/" . $fields_string;
$request = $url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT,'3');
$content = trim(curl_exec($ch));
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); …Run Code Online (Sandbox Code Playgroud) 我刚刚开始在XNA中提出有关轮换的问题.当您将矢量乘以XNA中的旋转矩阵时,它会逆时针旋转.我明白了.
但是,让我举一个例子,说明我没有得到的.假设我将随机艺术资产加载到管道中.然后我创建一些变量,以便在更新方法运行时将每个帧递增2弧度(testRot + = 0.034906585f).我困惑的主要是,资产在这个屏幕空间顺时针旋转.这让我感到困惑,因为旋转矩阵将逆时针旋转矢量.
另外一件事,当我指定我的位置向量的位置,以及我的起源时,我明白我在旋转原点.我是否假设有垂直轴穿过该资产的来源?如果是这样,轮换从哪里开始?换句话说,我是从Y轴还是x轴的顶部开始旋转?
所以,这是我最后一次唠叨继承问题,所以我想继续问一下.所以我将在PHP中给出一个例子:
<?php
class Base
{
private $z = 4;
function GetPrivate()
{
echo $this->z;
}
}
class Derived extends Base
{
}
$b = new Base();
$d = new Derived();
$d->GetPrivate();
Run Code Online (Sandbox Code Playgroud)
?>
很简单.当我一直读到关于继承的时候,解释只是"你继承了公众和受保护的成员",就是这样.我没有得到的是关于这个例子中的解释器如何计算什么属于什么的一些事情.
例如,当创建派生类时,我能够使用Base的公共函数"GetPrivate"获取基类的私有变量.但是,继承的简单定义对我来说不起作用.我的意思是,我继承了GetPrivate方法,但我仍然只是从属于基类的那个方法得到某种私有变量的链接(即使$ this指的是派生类对象).我无法在Derived类中创建新函数来访问这些私有变量.
因此,解释器是否会密切关注基类中继承的函数以及它们对仅适用于该基类的私有成员的可能链接?
所以我正在使用Accelerated C++,并且对C++中的迭代器失效有点不确定.也许这是事实,从来没有解释过如何构造这些迭代器是问题所在.
这是一个例子:
矢量与{1,2,3}
如果我的迭代器在{2}并且我在{2}上调用擦除,则我的迭代器无效.为什么?在我的脑海中,{3}向下移动,因此{2}所在的内存位置使得迭代器仍指向有效元素.我认为这不是真的唯一方法是迭代器是事先为每个元素制作的,并且每个迭代器都有某种类型的字段,其中包含该容器中以下元素的地址.
我的另一个问题与诸如"使所有其他迭代器无效"之类的语句有关.嗯,当我遍历我的矢量容器时,我正在使用一个迭代器.向量中的所有元素是否隐式地将它们自己的迭代器与它们相关联,或者我错过了什么?
我开始制作自己的复制构造函数,这对我来说总体上是有道理的.但是,关于做自己的赋值操作符的主题,我需要有人为我填写空白.
我几乎不知道为什么你要在所有的例子中返回*,例如下面的例子:
Foo & Foo::operator=(const Foo & f)
{
//some logic
return *this;
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我有一些陈述,如:
Foo f;
f.hour = 7;
Foo g;
g = f;
Run Code Online (Sandbox Code Playgroud)
赋值运算符运行后,它将返回对g对象的引用(*this).所以现在的问题是,我现在不会有这样的含义吗?:
g = g (g being a reference)
Run Code Online (Sandbox Code Playgroud)
事实上,在设置对象之前,只会引起复制构造函数的调用.在这种情况下,它甚至不适合复制构造函数的签名.
在Direct3D中乘以矩阵以获得结果时,我收到了两个相互矛盾的答案.教程确实表示要从左到右相乘,这很好,但这不是我想象它的方式.
这是一个例子:
OpenGL(从上到下阅读):
GLRotatef(90.0f);
GLTranslatef(20.0f,0,0);
Run Code Online (Sandbox Code Playgroud)
因此,您可以将世界轴旋转30度.然后在现在旋转的x轴上平移20.0,这样看起来你正在世界y轴上升.
在Direct3D中,做:
wm = rotatem * translatem;
Run Code Online (Sandbox Code Playgroud)
是不同的.看起来这个物体只是在原点处旋转并在世界的x轴上平移,因此它向右移动而不是向上移动.它只有在我颠倒顺序并从右到左阅读时才有效.
还有例如,在frank luna的关于DX10的书中,他开始解释如何进行镜像反射.我得到了所有这一切,但是当他这样做时:
reflection_matrix = world_m * reflection_m;
Run Code Online (Sandbox Code Playgroud)
在xy平面周围,我是否将其解释为首先进行世界定位然后反射或相反?
我的问题是关于抛出和异常冒泡.我正在四处搜索文件锁定和C#,我试着弄乱别人的代码,这让我怀疑我对抛出和异常冒泡有多了解.
这是线程的链接.
public class FileManager
{
private string _fileName;
private int _numberOfTries;
private int _timeIntervalBetweenTries;
private FileStream GetStream(FileAccess fileAccess)
{
var tries = 0;
while (true)
{
try
{
return File.Open(_fileName, FileMode.Open, fileAccess, Fileshare.None);
}
catch (IOException e)
{
if (!IsFileLocked(e))
throw;
if (++tries > _numberOfTries)
throw new MyCustomException("The file is locked too long: " + e.Message, e);
Thread.Sleep(_timeIntervalBetweenTries);
}
}
}
private static bool IsFileLocked(IOException exception)
{
int errorCode = Marshal.GetHRForException(exception) & ((1 << 16) - 1);
return …Run Code Online (Sandbox Code Playgroud) 编辑:只是想提出我更清楚的问题.我几乎无法看到像Matrix.CreateTransformationZ这样的东西不仅在矩阵乘法的情况下工作,更重要的是它对屏幕空间/世界空间的作用,所以我可以得到更清晰的图像.因此,也许有人可以改变代码或给我一个简短的片段来测试我可以使用它来围绕轴旋转和/或绕轴旋转.我也改变了这个例子.
因此,我仍然难以直观地了解矩阵如何与xna屏幕空间一起工作.
我给你举个例子:
public class Game1 : Microsoft.Xna.Framework.Game
{
Texture2D shipTexture, rockTexture;
Vector2 shipPosition = new Vector2(100.0f, 100.0f);
Vector2 rockPosition = new Vector2(100.0f, 29.0f);
int count;
float shipRotation, rockRotation;
float rockSpeed, rockRotationSpeed;
bool move = true;
const int rock = 0;
const int ship = 1;
Color[] rockColor;
Color[] shipColor;
float testRot = 0.0f;
Vector2 shipCenter; int shipWidth, shipHeight;
Vector2 rockCenter; int rockWidth, rockHeight;
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
#region maincontent
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = …Run Code Online (Sandbox Code Playgroud) 我正在阅读引子中的一个例子,它所谈到的事情并没有发生.具体来说,任何隐式浅拷贝都应该复制指针的地址,而不仅仅是指向的值(因此是相同的内存地址).但是,每个pos属性都指向两个不同的内存地址(因此我可以更改一个值而不影响另一个).我究竟做错了什么?
头
#include "stdafx.h"
#include <iostream>
class Yak
{
public:
int hour;
char * pos;
const Yak & toz(const Yak & yk);
Yak();
};
Run Code Online (Sandbox Code Playgroud)
结束标题
using namespace std;
const Yak & Yak:: toz(const Yak & yk)
{
return *this;
}
Yak::Yak()
{
pos = new char[20];
}
int _tmain(int argc, _TCHAR* argv[])
{
Yak tom;
tom.pos="Hi";
Yak blak = tom.toz(tom);
cout << &blak.pos << endl;
cout << &tom.pos << endl;
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我正在阅读一些有效的c ++,我意识到我的思路可能不正确.
class A
{
public:
void laka()
{
const void * raw = dynamic_cast<const void*>(this);
cout << raw << endl;
}
virtual ~A() = 0;
};
A::~A() {}
class B : public A
{
public:
void ditka() {}
};
int _tmain(int argc, _TCHAR* argv[])
{
B b;
cout << &b << endl;
b.laka();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
书中说通过使用带有*void的dynamic_cast,我会得到一个对象的起始地址,但是所有的地址输出都是相同的.
当我只输出上面的普通旧&b的地址时,地址是否显示了派生对象的起始地址或b中的基础对象?
如果我对#1不正确或错误,我如何获得b中每个子对象的起始地址?我只是手动必须偏移,dynamic_cast如何使用它或只是澄清作者的意思?
所以我正在阅读这个页面上的内容(http://gamedeveloperjourney.blogspot.com/2009/04/point-plane-collision-detection.html)
提交人提到
d = - D3DXVec3Dot(&vP1, &vNormal);
Run Code Online (Sandbox Code Playgroud)
其中vP1是平面上的一个点,vNormal是平面的法线.我很好奇这是如何让你与世界起源的距离,因为结果总是为0.此外,为了清楚(因为我对平面方程的d部分仍然有些朦胧),在一个平面方程式中,是从一条直线穿过世界原点到平面原点的距离?
不,这不是每个人都能错过当地人的错误.我只是想了解返回对你传入的对象的引用(我正在阅读引文).
所以,如果我有这样的功能:
const foo & foo::function2(const foo & val) const
{
using namespace std;
return *this;
}
Run Code Online (Sandbox Code Playgroud)
然后我主要做这个:
foo object1;
object1.someproperty = 7;
foo object2 = object1.function2(object1);
object2.someproperty = 5;
cout << &object1 << endl;
cout << &object2 << endl;
Run Code Online (Sandbox Code Playgroud)
当我通过引用返回时,object2不应该具有与object1相同的地址(和属性)吗?不应该改变一个对象中的"someproperty"来改变另一个对象的值吗?或者,返回对对象的引用是否只是将值复制到新对象中?
似乎同样的事情正在发生,好像我只是说我要返回一个foo对象而不是一个引用.