Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   String, Number и TweenLite (http://www.flasher.ru/forum/showthread.php?t=187323)

XMON 17.11.2012 18:32

String, Number и TweenLite
 
как можно создать переменную так, чтобы она принадлежала типу number и string?
вот пример того, что мне надо:

Код AS3:

var mX //та самая переменная для изменения
 
DELSS.addEventListener(MouseEvent.MOUSE_OVER, mXX)
DELSS.addEventListener(MouseEvent.MOUSE_OUT, Mxx)
 
addEventListener(Event.ENTER_FRAME, h)
 
function h (e:Event):void
{
    TweenLite.to(radar, 0.2, {x:mX, y:mouseY});
}
 
function mXX (e:MouseEvent):void
{
  trace ("попал")
  mX = 400
}
 
function Mxx (e:MouseEvent):void
{
  trace ("убрал")
  mX = mouseX
}


нужно чтобы объект radar двигался за мышкой с помощью TweenLite.to, а как только мышка наезжала на объект radar, он смог двигаться за мышкой только по координате Y и по X=400. Я попробовал сделать с помощю переменных, дал переменной mX тип - Number, но возникали проблемы, я предположил что строка - mX = mouseX не работает потому что эта переменная типа Number т.к. строка mX = 400 прекрасно работает и я подумал что нужно создать переменную чтоб считались эти два типа, но я таких не знаю.

Sintesis 17.11.2012 19:10

Два типа у одной переменой невозможны, можно приводить из одного в другой тип когда нужно, но у тебя в другом проблема. Что такое mouseX? В общем если нужно из String в Number то делаем так var myVar:number = Number(stringVar); и наоборот.

XMON 17.11.2012 19:55

сегодня я помаялся над кодом и сделал так:

Код AS3:

import flash.events.MouseEvent;
import flash.events.Event;
import com.greensock.*;
 
addEventListener(Event.ENTER_FRAME, h)
 
function h (e:Event):void
{
 
  DELSS.addEventListener(MouseEvent.MOUSE_OVER, mXX)
        DELSS.addEventListener(MouseEvent.MOUSE_OUT, Mxx)
 
}
 
function mXX (e:MouseEvent):void
{
  trace ("попал")
  TweenLite.to(radar, 0.2, {x:400, y:mouseY});
}
 
function Mxx (e:MouseEvent):void
{
  trace ("убрал")
  TweenLite.to(radar, 0.2, {x:mouseX, y:mouseY});
}

объект DELSS находится на слой выше объекта radar.

все великолепно, только при помещении мышки на объект DELSS, объект radar помещается в X=400, Y=положение мышки по Y, а потом не перемещается за мышкой по Y. Как только мыш убираем с объекта DELSS, объект radar помещается в X=положение мышки по X, Y=положение мышки по Y, а потом не перемещается за мышкой по X и Y. Как сделать так чтоб объект радар всегда перемещался за мышкой? и вообще, я все правильно сделал?

Sintesis 17.11.2012 20:11

Чтоб объект перемещался за мышкой нужно событие MouseEvent.MOUSE_MOVE
оно возвращает позицию мышки на stage и локальную позицию.
Код AS3:

addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveListener);
private function mouseMoveListener(event:MouseEvent):void{
      trace(event.stageX)
      trace(event.stageY)
}


XMON 18.11.2012 09:24

вы не совсем поняли(или я).
проблема только в том что кода мышка попадает или сходит с объекта DELSS, объект radar бежит за мышкой как я сказал и перестает двигаться и только когда заново мышка попадает или сходит с объекта DELSS, объект radar бежит за мышкой и останавливается в последних координатах мышки.

XMON 18.11.2012 09:29

Вложений: 1
думаю так будет наглядне:

XMON 18.11.2012 16:38

все, я разобрался. Сначала я не понял про MOUSE_MOVE и подумал что вы меня не так поняли, но позже я осознал что это то что мне надо (2 дня непрерывной и не успешной работы).
ОГРОМНОЕ ВАМ СПАСИБО!
и ещё один вопросик, есть ли такое событие чтобы оно проверяло - на объекте мышка находится, или нет?

Sintesis 18.11.2012 17:01

Цитата:

Сообщение от XMON (Сообщение 1104960)
ОГРОМНОЕ ВАМ СПАСИБО!
и ещё один вопросик, есть ли такое событие чтобы оно проверяло - на объекте мышка находится, или нет?

Спасибо на форуме говориться с помощью зелёного плюсика над моим сообщением!
Да есть такие события MouseEvent.MOUSE_OVER, MouseEvent.MOUSE_OUT, вы их уже использовали можно применить на объект событие MOUSE_MOVE когда мышка над ним.
Код AS3:

DELSS.addEventListener(MouseEvent.MOUSE_OVER, overListener) //мышка над DELSS
DELSS.addEventListener(MouseEvent.MOUSE_OUT, outListener)//мышка ушла, в нашем случае ей тяжело будет это сделать
function overListener (e:MouseEvent):void{
  //e.target возвращает объект на который повешено событие у вас это DELSS
  //и в это время мы можем повесить на DELSS событие MOUSE_MOVE
  e.target.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveListener);
}
//а когда мышка не на ушла с DELSS убираем событие
function outListener (e:MouseEvent):void{
 
  e.target.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveListener);
}


in4core 18.11.2012 18:41

Цитата:

Два типа у одной переменой невозможны
Sintesis - var mx:* = 10; mx = "10" , mx = new MovieClip() - двойка вам

Sintesis 18.11.2012 19:06

Цитата:

Сообщение от in4core (Сообщение 1104969)
Sintesis - var mx:* = 10; mx = "10" , mx = new MovieClip() - двойка вам

Ой и точно, звёздочка же есть, просто не пользуюсь никогда, как-то она дисциплину нарушает, хочется, чтоб всё было типизировано.


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

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