![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: May 2008
Сообщений: 66
|
В ролике кликаю мышью и не отпуская правой кнопки двигаю. Надо в этот момент нарисовать прямоугольник так, чтобы после onRelease вместо прямоугольника на сцене остался мувик. Ниже код которым я пытаюсь рисовать мувик, но не могу допереть, как удалять промежуточные линии (во время MouseMove должен оставаться один прямоугольник и растягиваться)
this.createEmptyMovieClip("mc_mc", this.getNextHighestDepth());
mc_mc.lineStyle(0, 0, 0);
mc_mc.beginFill(0, 0);
mc_mc.moveTo(0, 0);
mc_mc.lineTo(550, 0);
mc_mc.lineTo(550, 400);
mc_mc.lineTo(0, 400);
mc_mc.lineTo(0, 0);
mc_mc.endFill();
mc_mc.onPress = function() {
var x = this._xmouse, y = this._ymouse;
this.createEmptyMovieClip("create_mc", this.getNextHighestDepth());
this.onMouseMove = function() {
var dx = this._xmouse, dy = this._ymouse;
this.create_mc.lineStyle(2, 0, 100);
this.create_mc.moveTo(x, y);
this.create_mc.lineTo(dx, y);
this.create_mc.lineTo(dx, dy);
this.create_mc.lineTo(x, dy);
this.create_mc.lineTo(x, y);
};
};
mc_mc.onRelease = mc_mc.onReleaseOutside=function () {
this.create_mc.removeMovieClip();
};
|
|
|||||
this.onMouseDown = function() {
var sub:MovieClip = this.createEmptyMovieClip('sub'+this.getNextHighestDepth(), this.getNextHighestDepth());
sub._x = this._xmouse;
sub._y = this._ymouse;
this.onMouseMove = function() {
sub.clear();
sub.lineStyle(2,0,100);
sub.moveTo(0,0);
sub.lineTo(0,this._ymouse-sub._y);
sub.lineTo(this._xmouse-sub._x,this._ymouse-sub._y);
sub.lineTo(this._xmouse-sub._x,0);
sub.lineTo(0,0);
};
};
this.onMouseUp = function() {
delete this.onMouseMove;
};
|
|
|||||
|
Регистрация: May 2008
Сообщений: 66
|
круто, спасибо.
А я не знал, что для onMouseDown не нужен объект в виде клипа. А как мне убить рисовалку, когда надо перетащить нарисованный мувик? Еще, прежде чем нарисованный мувик станет драгабельным нужен один клик, как от этого избавиться? this.onMouseDown = function() {
for (i=1; i<200; i++) {
this["sub"+i].onPress = function() {
this.startDrag();
};
this["sub"+i].onRelease = this["sub"+i].onReleaseOutside=function () {
stopDrag();
};
}
var N = 1+this.getNextHighestDepth();
var nam:String = "sub"+N;
var sub:MovieClip = this.createEmptyMovieClip(nam, this.getNextHighestDepth());
sub._x = this._xmouse;
sub._y = this._ymouse;
this.onMouseMove = function() {
sub.clear();
sub.lineStyle(2, 0, 100);
sub.beginFill(0x0000FF, 50);
sub.moveTo(0, 0);
sub.lineTo(0, this._ymouse-sub._y);
sub.lineTo(this._xmouse-sub._x, this._ymouse-sub._y);
sub.lineTo(this._xmouse-sub._x, 0);
sub.lineTo(0, 0);
sub.endFill();
};
};
this.onMouseUp = function() {
delete this.onMouseMove;
};
Или отловить, что курсор над мувиком, тогда надо отключить рисовалку. Как? ![]() Последний раз редактировалось Dear.D; 11.07.2008 в 11:50. |
|
|||||
|
>> А я не знал, что для onMouseDown не нужен объект в виде клипа.
Так ведь мы пишем в руте, а рут тоже является мувиком >> Или отловить, что курсор над мувиком, тогда надо отключить рисовалку Именно так! p.s. Кстати, на форуме запрещено создавать несколько сообщений подряд. Объедините их! |
|
|||||
|
Регистрация: May 2008
Сообщений: 66
|
Совсем не понял, как здесь присваиваются имена клипам.
Рисую первый клип, по идее N = 1+свободная глубина (0). Когда этот клип пытаюсь перетаскивать trace выдает имя sub100. В коде не создается клип с таким именем. Как так? Как следствие, последующие разы рисуются клипы с неизвестными мне именами, поэтому их не получается таскать. function drawMovie() {
var N:Number = 1+this.getNextHighestDepth();
var nam:String = "sub"+N;
var sub:MovieClip = this.createEmptyMovieClip(nam, this.getNextHighestDepth());
sub._x = this._xmouse;
sub._y = this._ymouse;
this.onMouseMove = function() {
sub.clear();
sub.lineStyle(2, 0, 100);
sub.beginFill(0x0000FF, 50);
sub.moveTo(0, 0);
sub.lineTo(0, this._ymouse-sub._y);
sub.lineTo(this._xmouse-sub._x, this._ymouse-sub._y);
sub.lineTo(this._xmouse-sub._x, 0);
sub.lineTo(0, 0);
sub.endFill();
};
}
this.onMouseDown = function() {
for (i=1; i<=100; i++) {
this["sub"+i].onPress = function() {
delete this._parent.onMouseMove;
this.startDrag();
trace(this);
};
this["sub"+i].onRelease = this["sub"+i].onReleaseOutside=function () {
stopDrag();
};
drawMovie();
}
};
this.onMouseUp = function() {
delete this.onMouseMove;
};
|
|
|||||
|
Регистрация: May 2008
Сообщений: 66
|
В том то и дело, что мувики создаются createEmptyMovieClip, не важно, что эта функция внутри цикла. К тому же переменная i никак не связана с созданием новых имен, я ее ввел, чтобы отловить уже созданные мувики (иначе просто не знаю как к ним обращаться).
Мой мозг не выдерживает, я уже запутался ![]() Мож где почитать, тыкните пальцем. Последний раз редактировалось Dear.D; 11.07.2008 в 12:57. |
|
|||||
|
Цитата:
Цитата:
Зачем вам этот цикл вообще? Сделайте так, и не морочьте себе голову: function drawMovie() {
var N:Number = 1+this.getNextHighestDepth();
var nam:String = "sub"+N;
var sub:MovieClip = this.createEmptyMovieClip(nam, this.getNextHighestDepth());
sub._x = this._xmouse;
sub._y = this._ymouse;
this.onMouseMove = function() {
sub.clear();
sub.lineStyle(2, 0, 100);
sub.beginFill(0x0000FF, 50);
sub.moveTo(0, 0);
sub.lineTo(0, this._ymouse-sub._y);
sub.lineTo(this._xmouse-sub._x, this._ymouse-sub._y);
sub.lineTo(this._xmouse-sub._x, 0);
sub.lineTo(0, 0);
sub.endFill();
};
return sub;
}
this.onMouseDown = function() {
var mc=drawMovie();
mc.onPress = function() {
delete this._parent.onMouseMove;
this.startDrag();
trace(this);
};
mc.onRelease = this["sub"+i].onReleaseOutside=function () {
stopDrag();
};
};
this.onMouseUp = function() {
delete this.onMouseMove;
};
|
|
|||||
|
Регистрация: May 2008
Сообщений: 66
|
Да, все так. А как удалить ненарисованный мувик?
|
|
|||||
|
Чтобы удалить нарисованый мувик, вам нужно иметь на него ссылку.
Нужно ее где-нибудь сохранить. Я не совсем понимаю ваши задачи, попробуйте что-то в этом роде: var rectangles:Array=new Array();
function drawMovie() {
var N:Number = 1+this.getNextHighestDepth();
var nam:String = "sub"+N;
var sub:MovieClip = this.createEmptyMovieClip(nam, this.getNextHighestDepth());
sub._x = this._xmouse;
sub._y = this._ymouse;
this.onMouseMove = function() {
sub.clear();
sub.lineStyle(2, 0, 100);
sub.beginFill(0x0000FF, 50);
sub.moveTo(0, 0);
sub.lineTo(0, this._ymouse-sub._y);
sub.lineTo(this._xmouse-sub._x, this._ymouse-sub._y);
sub.lineTo(this._xmouse-sub._x, 0);
sub.lineTo(0, 0);
sub.endFill();
};
rectangles.push(sub);
return sub;
}
this.onMouseDown = function() {
var mc=drawMovie();
mc.onPress = function() {
delete this._parent.onMouseMove;
this.startDrag();
trace(this);
};
mc.onRelease = this["sub"+i].onReleaseOutside=function () {
stopDrag();
};
};
this.onMouseUp = function() {
delete this.onMouseMove;
};
function deleteMovie(){
rectangles.pop().removeMovieClip();
}
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:05. |
|
|
« Предыдущая тема | Следующая тема » |
|
|