Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Нажать две кнопки и между ними нарисовать прямую (http://www.flasher.ru/forum/showthread.php?t=110278)

Lidia 31.03.2008 02:32

Нажать две кнопки и между ними нарисовать прямую
 
Добрый вечер.
Помогите решить следующую проблему.
Имеется фон-картинка "пирамида". Ученик должен провести высоту. Как я понимаю, во флэш можно организовать это дело таким образом, что если нажаты две точки-кнопки (вершина и точка в середине основания), то пускай проводится линия.
Вопрос: как такое реализовать. Ссылка на детальное руководство и коды приветствуются. :rolleyes:

Заранее спасибо,
Лидия:victory:

Mr. Fixit 31.03.2008 04:03

Код:

// *** variables
var firstClicked : Boolean = false;

var line_mc : MovieClip = this.createEmptyMovieClip('line', 0);
line_mc.lineStyle(1);

// *** methods
function checkPos() : Void {
      if(!firstClicked) {
              standOnFirstPoint();
              firstClicked = true;
      }
      else standOnSecondPoint();

      delete this.onPress;
}

function standOnFirstPoint() : Void {
      line_mc.moveTo(_root._xmouse, _root._ymouse);
}

function standOnSecondPoint() : Void {
      line_mc.lineTo(_root._xmouse, _root._ymouse);
}

// *** events
top_btn.onPress = checkPos;
bottom_btn.onPress = checkPos;


udaaff 31.03.2008 04:19

Код:

apexPoint.onPress = onPressHandler;
apexPoint.onRelease = onRelaseHandler;
apexPoint.onReleaseOutside = function()
{
        delete this.onMouseMove;
        if (basePoint.hitTest(_level0._xmouse, _level0._ymouse))
                drawLine(this._x, this._y, basePoint._x, basePoint._y);
        else
                clearLine();
}

basePoint.onPress = onPressHandler;
basePoint.onRelease = onReleaseHandler;
basePoint.onReleaseOutside = function()
{
        delete this.onMouseMove;
        if (apexPoint.hitTest(_level0._xmouse, _level0._ymouse))
                drawLine(this._x, this._y, apexPoint._x, apexPoint._y);
        else
                clearLine();
}

function onPressHandler()
{
        this.onMouseMove = onMouseMoveHandler;
}

function onReleaseHandler()
{
        clearLine();
        delete this.onMouseMove;
}

function onMouseMoveHandler()
{
        drawLine(this._x, this._y, this._parent._xmouse, this._parent._ymouse);
        updateAfterEvent();
}

var line:MovieClip = this.createEmptyMovieClip("line", this.getNextHighestDepth());

function clearLine()
{
        line.clear();
}

function drawLine(x1:Number, y1:Number, x2:Number, y2:Number)
{
        line.clear();
        line.lineStyle(0);
        line.moveTo(x1, y1);
        line.lineTo(x2, y2);
}


Lidia 31.03.2008 11:45

Спасибо за кодики, но может хоть какое-то пояснение можно скинуть или уж тогда сразу готовый файл?
Лидия

Obi 31.03.2008 12:48

Цитата:

Сообщение от Lidia
Спасибо за кодики, но может хоть какое-то пояснение можно скинуть или уж тогда сразу готовый файл?
Лидия

Код Mr. Fixit'a с пояснениями:
Код:

// *** variables
var firstClicked : Boolean = false; // была-ли нажата первая кнопка

var line_mc : MovieClip = this.createEmptyMovieClip('line', 0); // создаем контейнер для будущей линии
line_mc.lineStyle(1); // ширина линии — 1 пиксел

// *** methods
function checkPos() : Void {
      if(!firstClicked) { // если первая кнопка не была нажата
              standOnFirstPoint(); // вызываем функцию
              firstClicked = true; // говорим, что кнопка нажалась
      }
      else standOnSecondPoint(); // если первую кнопку уже нажимали, запускаем standOnSecondPoint();

      delete this.onPress; // удаляем слушателя для той кнопки, на которую нажали
}

function standOnFirstPoint() : Void {
      line_mc.moveTo(_root._xmouse, _root._ymouse); // двигаем перо к перой кнопке
}

function standOnSecondPoint() : Void {
      line_mc.lineTo(_root._xmouse, _root._ymouse); // рисуем линию  ко второй кнопке
}

// *** events
// добавляем слушателя
top_btn.onPress = bottom_btn.onPress = checkPos;  // при нажатии на одну из кнопок, запускается функция checkPos


Alex Lexcuk 31.03.2008 16:24

Вот примерчик для детишек.
http://kind-armadillo.pochta.ru/fla/scool_test.swf
http://kind-armadillo.pochta.ru/fla/scool_test.zip

Lidia 31.03.2008 20:36

Вложений: 1
Добрый день.
Попробовала создать просто что-то типо варианта, когда нажимаешь на две точки еа белом (пока) поле. Выдаёт ошибки. Что я делаю не так (а деляю я явно где-то что-то не так).:rolleyes:
Лида

Obi 31.03.2008 20:43

Вложений: 1
Пардон за большой размер — лень было кнопки рисовать.

udaaff 31.03.2008 21:04

Вложений: 1
asdfg

Lidia 02.04.2008 00:30

Udaaff, спасибо Вам большое. Это именно то, что мне надо было создать. Один маааленький вопросик - а как избавиться/зафиксировать высоту, когда нажата вторая точка?

С уважением,
Лидия


Часовой пояс GMT +4, время: 07:52.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.