Actionscript 3 课程-新手在“这个”课程
我上课很新。下面是创建StageObject类的尝试,我可以设置宽度、高度、xy和背景色Actionscript 3 课程-新手在“这个”课程,actionscript-3,Actionscript 3,我上课很新。下面是创建StageObject类的尝试,我可以设置宽度、高度、xy和背景色 package { import flash.display.MovieClip; public class StageObjects extends MovieClip { public function StageObjects() { // constructor code }
package
{
import flash.display.MovieClip;
public class StageObjects extends MovieClip
{
public function StageObjects()
{
// constructor code
}
public function setUpStageObject(w:int, h:int, X:int, Y:int, color:Number):void
{
this.width = w;
this.height = h;
this.x = X;
this.y = Y;
this.cacheAsBitmap = true;
this.graphics.beginFill(color,1);
this.graphics.drawRect(0,0,w,h);
this.graphics.endFill();
this.opaqueBackground = color;
trace("parameters: " + w + " - " + h + " - " + X + " - " + Y + " - " + color);
}
/*~~~ adjust position and scale functions ~~~*/
public function adjustXY(ch:Object, par:Object):void
{
var w = par.width;
var h = par.height;
ch.x = par.x + (w - ch.width) / 2;
ch.y = par.y + (h - ch.height) / 2;
}
public function adjustWH(ch:Object, par:Object):void
{
var w = par.width;
var h = par.height;
}
}
}
在主时间线闪存中,我执行以下操作:
var titleBkg:StageObjects = new StageObjects();
titleBkg.setUpStageObject(imageBoxWidth, titleBkgHeight, -1, imageBoxHeight +1, 0x589199);
this.addChild(titleBkg);
但它没有出现。我提到这个了吗。错了?我想您在构造函数中声明了宽度、高度、图形等。在我的类代码中,我从未使用过“this”。如果变量声明为类private/public,编译器将不允许您使用相同的名称声明其他变量。因此,您不必使用“this”,但使用“this”时可读性更强。您将知道它是类变量。
你们有并没有把你们的图形添加到舞台上,不是标题KG,而是你们在标题KG对象中创建的对象 您没有使用addChild正确创建图形并将其设置为父图形 实际上,您的舞台如下所示:
Stage ¬
0: MainTimeline:MovieClip ¬
0: instance1:StageObjects
Stage ¬
0: MainTimeline:MovieClip ¬
0: instance1:StageObjects ¬
0: instance1:Shape
它需要像这样:
Stage ¬
0: MainTimeline:MovieClip ¬
0: instance1:StageObjects
Stage ¬
0: MainTimeline:MovieClip ¬
0: instance1:StageObjects ¬
0: instance1:Shape
图形调用应该在形状上调用,而不是在电影唇上调用。您也可以在第一次通话时使用一条线路而不是两条线路进行设置
package {
import flash.display.MovieClip;
public class StageObjects extends MovieClip {
public function StageObjects(w:int, h:int, X:int, Y:int, color:uint) {
// Constructor
this.x = X;
this.y = Y;
var rect:Shape = new Shape();
rect.graphics.beginFill(color,1);
rect.graphics.drawRect(0,0,w,h);
rect.graphics.endFill();
addChild(rect);
trace("parameters: " + w + " - " + h + " - " + X + " - " + Y + " - " + color);
}
public function adjustXY(ch:Object, par:Object):void {
// adjust position and scale functions
var w = par.width;
var h = par.height;
ch.x = par.x + (w - ch.width) / 2;
ch.y = par.y + (h - ch.height) / 2;
}
public function adjustWH(ch:Object, par:Object):void {
var w = par.width;
var h = par.height;
}
}
}
创建对象将简化为:
var titleBkg:StageObjects = new StageObjects(imageBoxWidth, titleBkgHeight, -1, imageBoxHeight +1, 0x589199);
this.addChild(titleBkg);
设置空电影剪辑的宽度/高度无效。您可以删除此项。宽度=w;这个高度=h;如何提供剪辑内容?当然,如果您不需要movieclip的任何功能,请使用精灵。抱歉,编辑了上面的问题,是否将其更改为精灵?当你回答的时候。。我已经这样做了,但是它仍然没有宽度/高度,只是注释出宽度和高度声明实际上是有效的。谢谢我需要图形精灵(又名StageObject)可以根据stageWidth/stageHeight值进行缩放,因此无法将它们直接添加到stage。您应该始终使用this关键字。在查找对象的内存引用时,它对作用域施加了额外的约束。是的,您不必使用关键字,但它会使对象查找时间稍微加快。谢谢!我想我开始明白了。。。提示不祥的musicokay,如果我想创建另一个扩展StageObject的类SwapableObject呢。我可以这样做:'var newswap:SwapableObject=newstageobjectswidthamount,heightamount,xlocation,ylocation,color;'你应该,尽管你可能需要在扩展类上调用super,我不记得了。试试看