![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 23
|
У меня создаются мувиклипы таким образом:
this.createEmptyMovieClip("bar"+i,this.getNextHighestDepth()); Теперь я хочу, чтобы их можно было перемещать. Как задать для него событие onPress -> StartDrag? Спасибо. Последний раз редактировалось Noruen; 11.06.2009 в 01:10. Причина: Упростил код |
|
|||||
|
.
|
P. S. И избавляйтесь от привычки не ставить пробел после запятой, после и до знаков математических операций. Код становится сразу неопрятный.
Последний раз редактировалось dimarik; 11.06.2009 в 01:28. |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 23
|
Спасибо, но проблема-то в большом количестве мувиков, я их не собираюсь в цикле перебирать, надо напрямую каждому при создании дать...
Добавлено через 1 минуту i - переменная, изменяющаяся после создания каждого нового мувика. |
|
|||||
|
.
|
Гы. Ну в чем проблема-то? Для 10-ти мувиков:
var bar:MovieClip; for (var i:Number = 0; i < 10; i++) { bar = this.createEmptyMovieClip("bar" + i, this.getNextHighestDepth()); bar.onPress = function():Void { this.startDrag(); }; bar.onRelease = function():Void { stopDrag(); // It is a global function }; } Аха, я догадался, что i там не на масленницу смотрит. |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 23
|
Не работает, даже если сделать так, как, на мой взгляд, проще:
this.createEmptyMovieClip("bar" + _global.i, this.getNextHighestDepth()); this["bar" + _global.i].onPress = function():Void { trace ("yes"); } Цитата:
|
|
|||||
|
Почему не работает..?
Вот так нагляднее var bar:MovieClip; for (var i:Number = 0; i<10; i++) { bar = this.createEmptyMovieClip("bar"+i, this.getNextHighestDepth()); bar.beginFill(0xFF0000); bar.moveTo(10,10); bar.lineTo(100,10); bar.lineTo(100,100); bar.lineTo(10,100); bar.endFill(); bar.onPress = function():Void { this.startDrag(); }; bar.onRelease = function():Void { stopDrag();// It is a global function }; } |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 23
|
Спасибо. Кажется, я понял, почему не выходит, я всё повесил на мувиклип...
![]() Вообще, задача такова: рисoвать прямoугольники и пeрeтаскивать их. Я сделал это примерно так: Создал мувиклип "фон", которому прописываю следующий код: onClipEvent (enterFrame) { if (_global.pres==1) { invbar.clear(); invbar.lineStyle(1, 0x003366,40); invbar.moveTo(m_x, m_y); invbar.lineTo(_xmouse, m_y); invbar.moveTo(_xmouse, m_y); invbar.lineTo(_xmouse, _ymouse); invbar.moveTo(_xmouse, _ymouse); invbar.lineTo(m_x, _ymouse); invbar.moveTo(m_x, _ymouse); invbar.lineTo(m_x, m_y); } } on (press) { this.createEmptyMovieClip("invbar",this.getNextHighestDepth()); m_x = _xmouse; m_y = _ymouse; _global.pres = 1; } on (release) { if (_global.pres==1) { new_m_x = _xmouse; new_m_y = _ymouse; _global.pres=0; invbar.clear(); this.createEmptyMovieClip("bar" + _global.i, this.getNextHighestDepth()); with (this["bar" + _global.i]) { lineStyle(2, 0x003366,100); moveTo(m_x, m_y); lineTo(new_m_x, m_y); moveTo(new_m_x, m_y); lineTo(new_m_x, new_m_y); moveTo(new_m_x, new_m_y); lineTo(m_x, new_m_y); moveTo(m_x, new_m_y); lineTo(m_x, m_y); } _global.i++; } } invbar - это прямоугольник, который будет каждый раз перерисовываться от Press'a до Release'a. bar - прямоугольник, который будет нарисован после Release'a Я так понимаю, из-за недостатка знаний AS я всё выкрутил очень нехорошо. Но ведь события типа "onClipEvent (enterFrame)" можно прикрепить лишь к мувику.. И мне пришлось на него весь код вешать. Как это можно оптимизировать? Спасибо. |
|
|||||
i = 0; function lineCreate() { invbar.clear(); invbar.lineStyle(1,0x003366,40); invbar.moveTo(m_x,m_y); invbar.lineTo(_xmouse,m_y); invbar.moveTo(_xmouse,m_y); invbar.lineTo(_xmouse,_ymouse); invbar.moveTo(_xmouse,_ymouse); invbar.lineTo(m_x,_ymouse); invbar.moveTo(m_x,_ymouse); invbar.lineTo(m_x,m_y); } bg.onPress = function() { _root.createEmptyMovieClip("invbar",this.getNextHighestDepth()); _root.onMouseMove = lineCreate; m_x = _xmouse; m_y = _ymouse; }; bg.onRelease = function() { i++; new_m_x = _xmouse; new_m_y = _ymouse; invbar.clear(); var line_c:MovieClip=_root.createEmptyMovieClip("bar"+i,i); delete _root.onMouseMove; with (line_c) { lineStyle(2,0x003366,100); moveTo(m_x,m_y); lineTo(new_m_x,m_y); moveTo(new_m_x,m_y); lineTo(new_m_x,new_m_y); moveTo(new_m_x,new_m_y); lineTo(m_x,new_m_y); moveTo(m_x,new_m_y); lineTo(m_x,m_y); } }; |
|
|||||
|
Откуда?
![]() От сель, что ли? Тогда invbar будет в bg создаваться, нафиг это надо? Думаю так надо было. var i:Number = 0; var oneBigMovie:MovieClip = lines_mc.createEmptyMovieClip("oneBigMovie", 998); function lineCreate() { invbar.clear(); invbar.lineStyle(1,0x003366,40); invbar.moveTo(m_x,m_y); invbar.lineTo(_xmouse,m_y); invbar.lineTo(_xmouse,_ymouse); invbar.lineTo(m_x,_ymouse); invbar.lineTo(m_x,m_y); var_w = invbar._width; var_h = invbar._height; } bg.onPress = function() { _root.createEmptyMovieClip("invbar",this.getNextHighestDepth()); this.onMouseMove = lineCreate; m_x = _xmouse; m_y = _ymouse; i++; }; bg.onRelease = function() { new_m_x = _xmouse; new_m_y = _ymouse; invbar.clear(); var line_c:MovieClip = oneBigMovie.createEmptyMovieClip("bar"+i, i); line_c._x = new_m_x; line_c._y = new_m_y; delete this.onMouseMove; with (line_c) { lineStyle(2,0x003366,100); beginFill(0xFF0000,50); lineTo(var_w,0); lineTo(var_w,var_h); lineTo(0,var_h); endFill(); } line_c.onPress = function() { this.startDrag(); }; line_c.onRelease = function() { this.stopDrag(); }; }; |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|