Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Текст, меняющийся в зависимости от передвижения объекта (http://www.flasher.ru/forum/showthread.php?t=184308)

Yulia_V 15.09.2012 20:07

Текст, меняющийся в зависимости от передвижения объекта
 
Вложений: 1
Здравствуйте, я начала изучать Action Script совсем недавно. Никак не могу справиться с одной проблемой:
Я хочу сделать так, чтобы по верхней части экрана передвигалась полоса, которая выходит на 2/3 за его пределы справа и слева. Собственно это у меня получилось. Но проблема заключается в том, что я хочу ещё чтоб в зависимости от её перетаскивания под ней менялся текст. Я решила построить это на столкновении объектов, сделав полосу qw_mc контейнером, в котором к его середине прикреплён объект qw1_mc. Так же я смогла сделать чтобы в выводе отображалось true и false столкновения qw1_mc с определёнными точками. Но как сделать чтоб в зависимости от этого менялся ещё и текст в нижней части экрана? Пожалуйста, помогите если у вас есть возможность!

Вот мой код:

Код AS3:

import flash.geom.Rectangle;
import flash.events.MouseEvent;
import flash.sensors.Accelerometer;
 
qw_mc.addEventListener (MouseEvent.MOUSE_DOWN,onMD);
function onMD(e:MouseEvent):void
{
  qw_mc.startDrag (false, new Rectangle (-275,100,1100,0));
stage.addEventListener(MouseEvent.MOUSE_UP,onMU);
}
function onMU (e:MouseEvent):void
{
  qw_mc.stopDrag();
}
stage. addEventListener (MouseEvent.MOUSE_MOVE,onMoseMove);
function onMoseMove (e:MouseEvent):void
{
 
  trace ("s tochkoi 3" + qw_mc.qw1_mc.hitTestPoint(-275,100,true));
  trace ("s tochkoi 2" + qw_mc.qw1_mc.hitTestPoint(275,100,true));
  trace ("s tochkoi 1" + qw_mc.qw1_mc.hitTestPoint(825,100,true));
 
 
}


mooncar 15.09.2012 21:45

Yulia_V, код оформляйте тегами.
И поаккуратней с кодом - у вас там пробел в stage. addEventListener и табуляция гуляет.

Hauts 15.09.2012 21:58

В "onMoseMove" (у вас написано с ошибкой) смотрите координату "x" у вашего клипа и считайте простейшими формулами, насколько он сдвинут и, в зависимости от этого, выставляйте нужный текст. Не нужно никаких hitTestPoint.

Добавлено через 35 секунд
Вы программируете горизонтальный скроллбар?

CyberGenius 15.09.2012 21:59

А мне сразу в голову приходит более простая реализация:
Завязать вывод текста на определенные координаты полосы прокрутки.
Например можно использовать оператор if:
Код AS1/AS2:

if (qw_mc.x == 20)
{
//Выводим текст №1
}
if (qw_mc.x == -20 )
{
//Выводим текст № 2
}


Hauts 15.09.2012 22:06

Используйте тогда уж не "==", а "<=" и ">=" ("меньше или равно" и "больше или равно" соотв.) и оператор else.

Код:

if(a < 20){
 // ..20
} else if (a < 40){
  // 20..40
} else {
  // 40..
}


Yulia_V 16.09.2012 00:55

Спасибо, сейчас мой код выглядит так:
Код AS3:

import flash.geom.Rectangle;
import flash.events.MouseEvent;
import flash.sensors.Accelerometer;
 
qw_mc.addEventListener (MouseEvent.MOUSE_DOWN,onMD);
function onMD(e:MouseEvent):void
{
        qw_mc.startDrag (false, new Rectangle (-275,100,1100,0));
stage.addEventListener(MouseEvent.MOUSE_UP,onMU);
}
function onMU (e:MouseEvent):void
{
        qw_mc.stopDrag();
}
stage.addEventListener (MouseEvent.MOUSE_MOVE,onMoseMove);
function onMoseMove (e:MouseEvent):void
{
 
var position:Number = qw_mc.x
 
if(position == -275){
  text_txt.text="3я треть"
}else if(position == 275){
  text_txt.text="2я треть";
}else if(position == 825){
  text_txt.text="1я треть";
}
  e.updateAfterEvent()
 
}

Почти как надо, только есть проблемка: Когда я перетаскиваю полосу через точку символизирующую вторую треть, текст не успечает смениться, остаётся "1я треть", затем сразу "3я треть". e.updateAfterEvent() ничего не даёт. Может можно задать не конкретную точку, а промежуток? Пожалуйста подскажите что можно сделать.

Yulia_V 16.09.2012 01:23

Кажется, я со всем разобралась! Спасибо огромное!


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

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