#flash #actionscript-3 #flash-cs4 #flash-cs5
#flash #actionscript-3 #flash-cs4 #flash-cs5
Вопрос:
import flash.display.Sprite;
var bin:Sprite = new Sprite();
var cir:Sprite = new Sprite();
cir.graphics.beginFill(0x00ff00,1);
cir.graphics.drawCircle(0,0,30);
cir.graphics.endFill();
bin.graphics.beginFill(0xff0000,1);
bin.graphics.drawRoundRect(40,40,100,100,5,5);
bin.graphics.endFill();
addChild(bin);
bin.addChild(cir);
// Вот почему круг добавляется за пределы квадратного поля?
Ответ №1:
Поскольку вы добавляете свой прямоугольник в x:40/y:40 но ваш круг в x:0/y:0
var bin:Sprite = new Sprite();
var cir:Sprite = new Sprite();
cir.graphics.beginFill(0x00ff00,1);
cir.graphics.drawCircle(40,40,30);
cir.graphics.endFill();
bin.graphics.beginFill(0xff0000,1);
bin.graphics.drawRoundRect(40,40,100,100,5,5);
bin.graphics.endFill();
addChild(bin);
bin.addChild(cir);
Работает нормально
Комментарии:
1. Но я добавил спрайт «cir» в спрайт «bin». Все в порядке. Дайте мне знать, в чем заключается разница, применяющая x, y pos внутри и снаружи? bin.graphics.drawRoundRect(40,40,100,100,5,5); // bin.graphics.drawRoundRect(0,0,100,100,5,5); bin.x = bin.y = 40;
Ответ №2:
Причина, по которой это добавляется вне поля, заключается в том, что drawRoundRect по-прежнему создает спрайт с 0,0 на сцене, но не запускает заливку до 40,40. Вы можете проверить это, проследив свойства bin x и y, чтобы увидеть, что они начинаются с 0,0, и свойства width и height, чтобы увидеть, что они оба равны 100, а не 60. Возможно, вам повезет лучше нарисовать все объекты из 0,0, а затем просто настроить родительский DisplayObject следующим образом:
import flash.display.Sprite;
var bin:Sprite = new Sprite();
var cir:Sprite = new Sprite();
bin.graphics.beginFill(0xff0000,1);
bin.graphics.drawRoundRect(0,0,60,60,5,5);
bin.graphics.endFill();
cir.graphics.beginFill(0x00ff00,1);
cir.graphics.drawCircle(0,0,30);
cir.graphics.endFill();
addChild(bin);
bin.addChild(cir);
bin.x = bin.y = 40; //move the parent object, all child objects will move with it
Ответ №3:
Посмотрите на свои функции рисования:
drawCircle(x, y, radius)
drawRoundRect(x, y, width, height...)
Итак, центр круга расположен в точке 0,0 и имеет радиус 30 пикселей, прямоугольник начинается с 40,40, поэтому он начинается дальше, чем заканчивается круг.
вы скорее попробуете:
drawCircle(90, 90, radius)
drawRoundRect(40, 40, 100, 100...)
чтобы в середине прямоугольника был круг.