PDA

Просмотр полной версии : Эффект прилипания+управление TextField


focor
24.03.2008, 21:25
Нужно сделать проект по строительству трубопровода.

Строится он так:
-задается начальная точка участка трубы.Может продолжать другой участок или создаваться с новой позиции.
-задается диаметр,длина,угол поворота и др параметры...

Нужно чтобы начальная точка могла прилипать при придвижении к какой-либо другой точке на расстояние МЕНЕЕ 10 пикселей, допустим (точки-участки отмечающие начало и конец участков трубы)

Каждый участок-самостоятельный мовиклип.МК должен в идеале отображать учаток трубы и текстовое поле в котором указаны параметры участка).
По ходу строительства создается двумерный массив с параметрами участков.
Строительство ведется из псевдо-консоли(Поле тектфилд) вида
==
Задайте начальную точку с помощью мыши.
Введите длину 50
Введите диаметр 3
По завершению строительства введите END
==
Вопросы:
-как сделать прилипание
-как сделать, чтобы курсор в текстфилд перемещался на последний символ(делал событием апдейт-в нем ловил /r.Курсор при добавлении текста типа "введите тото" остается на месте последнего ввода)

Может у кого есть предложения по улучшению моего видения проекта?
Или подобные примеры?

silin
25.03.2008, 02:25
я знаю почему нет ответов в этом топике:
никому не интересно строить чужой (чуждый?) проект.., нужны конкретные вопросы..

прилипание можно сделать просто посчитав расстояние между точками (можно для этого Point.distance пользовать), ну и 'прилипать' когда меньше

как достигнуть "делал событием апдейт-в нем ловил /r.Курсор при добавлении текста типа "введите тото" остается на месте последнего ввода" не берусь сказать..
могу тока посоветовать посмотреть TextField.onSetFocus и методы класса Selection

focor
25.03.2008, 22:03
Я расказал про проект с целью облегчения понятия того, что я хочу.
Я обратился с конкретными вопросами по-моему.
Но приму к сведению.

etc
25.03.2008, 23:35
«Как сделать прилипание» — это не конкретный вопрос. Это просьба накорябать для вас несколько десятков (сотен, тысяч, etc.) строк кода «маленького примерчика». Это слишком дорого.
На второй вопрос ответ находится прочтением документации по ActionScript.

focor
26.03.2008, 02:21
со вторым разобрался-спасибо.
с первым-идея не нова и кого-то что-то подобное есть.Если пришлют исходник-буду благодарен

olexandr
26.03.2008, 16:23
надеюсь, послужит трамплином :)

var rushX:Number = 200;
var rushY:Number = 200;
var rushK:Number = 10;

this.createEmptyMovieClip('rush_mc',0);
rush_mc._x = rushX;
rush_mc._y = rushY;
rush_mc.moveTo(-rushK,-rushK);
rush_mc.beginFill(0x0000FF,100);
rush_mc.lineTo(rushK,-rushK);
rush_mc.lineTo(rushK,rushK);
rush_mc.lineTo(-rushK,rushK);
rush_mc.lineTo(-rushK,-rushK);

this.createEmptyMovieClip('_mc',1);
_mc.moveTo(0,0);
_mc.beginFill(0xFF0000,100);
_mc.lineTo(100,0);
_mc.lineTo(100,100);
_mc.lineTo(0,100);
_mc.lineTo(0,0);

_mc.onPress = function() {
this.startDrag();
this.onMouseMove = function() {
if (Math.abs(this._x-rushX)<=rushK && Math.abs(this._y-rushY)<=rushK) {
this._x = rushX;
this._y = rushY;
this.onRelease();
}
};
};
_mc.onRelease = _mc.onReleaseOutside=function () {
this.stopDrag();
this.onMouseMove = null;
};