Если цель == spr, делать что то. Помогите!

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.

Если цель == spr, делать что то. Помогите!

Сообщение wierusna » 03 дек 2012, 18:04

Есть функция select. По идеи должно вызывать функцию toolInit, если цель == spr.
Этот самый spr является спрайтом ( public var spr:Sprite=new Sprite() ) и добавляется на сцену после нажатия на кнопку. Их может быть добавлено бесконечное количество (зависит от нажатия кнопки)

Но функция toolInit не вызывается( Как мне записать правильно это }else if (event.currentTarget == spr ??

  1. public function select(event){
  2.     if (event.target is Stage) {
  3.         currTool.target = null;
  4.     }else if (event.currentTarget == spr) {
  5.         currTool.target = event.currentTarget as Sprite;
  6.         toolInit();
  7.     }
  8. }



  1. public function toolInit():void {
  2. currTool.parent.setChildIndex(currTool, currTool.parent.numChildren - 1);
  3.    
  4.  
  5.    
  6. }
wierusna

 
Автор темы
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: Если цель == spr, делать что то. Помогите!

Сообщение Alazaur » 03 дек 2012, 18:16

event.target == spr
Alazaur
Разработчик
Разработчик
 
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25
Благодарил (а): 24 раз.
Поблагодарили: 121 раз.

Re: Если цель == spr, делать что то. Помогите!

Сообщение wierusna » 03 дек 2012, 18:34

Alazaur писал(а):event.target == spr

Пробовал...Так и было по началу, но не выходит все равно.
wierusna

 
Автор темы
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.

Re: Если цель == spr, делать что то. Помогите!

Сообщение Alazaur » 03 дек 2012, 18:36

весь код отвечающий за добавление спрайтов на сцену. и объявление слушателей скиньте напоглядеть.
Alazaur
Разработчик
Разработчик
 
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25
Благодарил (а): 24 раз.
Поблагодарили: 121 раз.

Re: Если цель == spr, делать что то. Помогите!

Сообщение wierusna » 03 дек 2012, 18:45

Спрайты служат контейнерами для картинок, которые подгружаются из XML. (Это сделано для того, что бы их можно было перетаскивать мышью startDrag and stopDrag)
Я эти контейнеры (срайты) хочу трансформировать с помощью TransformTool (Изменять размер, поворачивать и тд.), но никак не могу. Если записать так event.target is Sprite, то будет трансформироваться ВСЕ, что на сцене, включая и mytree, кнопки и прочее, а мне нужно что бы трансформировались ТОЛЬКО spr (контейнеры)

Вот код

  1.  
  2. package
  3. {
  4.     import flash.display.*;
  5.     import flash.events.*;
  6.     import com.yahoo.astra.fl.controls.treeClasses.*;
  7.     import com.senocular.display.TransformTool;
  8.     import fl.events.ListEvent;
  9.     import flash.utils.ByteArray;
  10.     import flash.net.URLRequest;
  11.     import flash.net.URLRequestHeader;
  12.     import flash.net.URLRequestMethod;
  13.     import flash.net.URLLoader;
  14.     import flash.system.LoaderContext
  15.     import flash.system.ApplicationDomain
  16.     import flash.display.MovieClip;
  17.     import flash.display.Loader;
  18.     import flash.xml.XMLDocument;
  19.     import flash.system.*;
  20.     import flash.display.Sprite;
  21.     import flash.display.Bitmap;
  22.     import flash.display.BitmapData;
  23.     import com.yahoo.astra.fl.controls.treeClasses.*;
  24.     import vk.api.serialization.json.JSON;
  25.     import vk.api.MD5;
  26.     import vk.APIConnection;
  27.     import vk.events.*;
  28.     import vk.ui.*;
  29.     import vk.PNGEncoder;
  30.     import vk.MultipartURLLoader;
  31.     import vk.MultipartURLLoaderEvent;
  32.     import vk.api.serialization.json.JSON;
  33.     //папку vk можно найти в исходнике.
  34.  
  35.     public class Main extends Sprite
  36.     {
  37.         //transform tool
  38.         public var spr:Sprite=new Sprite()
  39.         public var defaultTool:TransformTool = new TransformTool();
  40.         public  var currTool:TransformTool = defaultTool;
  41.         //transform tool
  42.        
  43.         //turaga vars
  44.        
  45.         public var avaStage:String;//адрес загружаемой картинки из xml
  46.         public var ava:Loader = new Loader();//loader картинки из xml
  47.         public var avaStage2:String;//адрес загружаемой картинки из xml
  48.         public var ava2:Loader = new Loader();//loader картинки из xml
  49.        
  50.         public var XMLLoader:URLLoader = new URLLoader();
  51.         public var XMLdata:XML = new XML();
  52.         public var XMLLoader2:URLLoader = new URLLoader();
  53.         public var XMLdata2:XML = new XML();
  54.         public var context:LoaderContext = new LoaderContext();
  55.         public var index:MovieClip = new MovieClip();
  56.         //turaga vars
  57.  
  58.  
  59.  
  60.         public var uploadphoto:VKButton; //обычная кнопка
  61.         public var loader:Loader = new Loader();
  62.         public var urlforpost:String;//Адрес, на который будем отправлять фотографию, чтобы загрузить в профиль
  63.         public var urlofphoto:String;//адрес аватара
  64.         public var api_id:Number;
  65.         public var viewer_id:Number;
  66.         public var sid:String;
  67.         public var secret:String;
  68.         public var changephotobtn:VKButton; //обычная кнопка
  69.         public var profilephoto:Bitmap; //фотография пользователя
  70.         public var brr:ByteArray;
  71.         //получаем flashvars
  72.         public var flashVars:Object = stage.loaderInfo.parameters as Object;
  73.         //инициализация
  74.         public var VK:APIConnection = new APIConnection(flashVars);
  75.  
  76.        
  77.        
  78.        
  79.        
  80.         //transform tool
  81.        
  82.         // selecting objects on the screen
  83.        
  84.     public function select(event){
  85.     if (event.target is Stage) {
  86.         currTool.target = null;
  87.     }else if (event.currentTarget == spr) {
  88.         currTool.target = event.currentTarget as Sprite;
  89.         toolInit();
  90.     }
  91. }
  92.  
  93.     // changing tools using the toolChange button
  94.     public function setTool(event:MouseEvent):void {
  95.    
  96.    
  97.    
  98.     // unset currTool
  99.     currTool.target = null;
  100.    
  101.    
  102.     toolInit();
  103. }
  104.  
  105.     // for setting a new tool
  106.     public function toolInit():void {
  107.     // raise
  108.     currTool.parent.setChildIndex(currTool, currTool.parent.numChildren - 1);
  109.    
  110.     // center registration for customTool
  111.    
  112. }
  113.        
  114.         //transform tool
  115.        
  116.        
  117.        
  118.        
  119.        
  120. public function Main()
  121.         {
  122.             //transform tool
  123.             addChild(defaultTool);
  124.             addChild(spr);
  125.            
  126.         //transform tool
  127.            
  128.             // event handlers for selecting objects and changing tools
  129.        stage.addEventListener(MouseEvent.MOUSE_DOWN, select);
  130.  
  131.            
  132.             context.securityDomain = SecurityDomain.currentDomain;
  133.             context.applicationDomain = ApplicationDomain.currentDomain;
  134.                  
  135.  
  136.             //переменные приложения
  137.             api_id = flashVars['api_id'];
  138.             viewer_id = flashVars['viewer_id'];
  139.             sid = flashVars['sid'];
  140.             secret = flashVars['secret'];
  141.             //получаем адрес, на который будем отправлять картинку
  142.             VK.api('photos.getProfileUploadServer', {}, geturl, onError);
  143.            
  144.             addChild(index);
  145.             setChildIndex(index, 1);
  146.             XMLLoader.addEventListener(Event.COMPLETE, xmlLoaded)
  147.             XMLLoader.load(new URLRequest("http://mega-tv.do.am/XMLturaga/img.xml"));
  148.             XMLLoader2.addEventListener(Event.COMPLETE, xmlLoaded2)
  149.             XMLLoader2.load(new URLRequest("http://mega-tv.do.am/XMLturaga/ava.xml"));
  150.  
  151.         }
  152.         private function xmlLoaded(event:Event):void {
  153.         XMLdata = new XML(event.target.data);
  154.         mytree.dataProvider = new TreeDataProvider(XMLdata);
  155.        
  156.  
  157.         mytree.addEventListener(ListEvent.ITEM_CLICK, addClick);
  158.    
  159.    
  160.    
  161.    
  162.         }
  163.        
  164.         private function xmlLoaded2(event:Event):void {
  165.         XMLdata2 = new XML(event.target.data);
  166.         mytree2.dataProvider = new TreeDataProvider(XMLdata2);
  167.        
  168.  
  169.         mytree2.addEventListener(ListEvent.ITEM_CLICK, addClick2);
  170.    
  171.    
  172.    
  173.    
  174.         }
  175.        
  176.        
  177.         private function addClick (ev:ListEvent) {
  178.  
  179.         if (ev.item.src != null) {
  180.        
  181.         //removeChild(getChildAt(0));
  182.         avaStage = (ev.item.src);
  183.         var pictLdr:Loader = new Loader();
  184.         var pictURLReq:URLRequest = new URLRequest(avaStage);
  185.        
  186.         var spr:Sprite=new Sprite()
  187.         //var spr:Sprite=new Sprite()
  188.         spr.x=300;
  189.         spr.y=400;
  190.    
  191.         addChild(spr)
  192.  
  193.         pictLdr.load(pictURLReq, context) as MovieClip;
  194.        
  195.         //addChild(pictLdr);
  196.         spr.addChild(pictLdr)
  197.         setChildIndex(spr, 1);
  198.         spr.addEventListener(MouseEvent.MOUSE_DOWN, startDraging);
  199.         spr.addEventListener(MouseEvent.MOUSE_UP, stopDraging);
  200.        
  201. }   
  202. }
  203.        
  204.        
  205.        
  206.         private function addClick2 (ev2:ListEvent) {
  207.  
  208.         if (ev2.item.src != null) {
  209.        
  210.         removeChild(getChildAt(0));
  211.         avaStage2 = (ev2.item.src);
  212.         var pictLdr2:Loader = new Loader();
  213.         var pictURLReq2:URLRequest = new URLRequest(avaStage2);
  214.        
  215.        
  216.         //var spr:Sprite=new Sprite()
  217.         //spr.x=300;
  218.         //spr.y=400;
  219.         //addChild(spr)
  220.  
  221.         pictLdr2.load(pictURLReq2, context) as MovieClip;
  222.        
  223.         //addChild(pictLdr);
  224.         //spr.
  225.         addChild(pictLdr2)
  226.         setChildIndex(pictLdr2, 0);
  227.        
  228. }   
  229. }
  230.        
  231.        
  232.        
  233.        
  234.        
  235.        
  236.        
  237.        
  238.        
  239.        
  240.         private function startDraging(e:MouseEvent):void
  241. {
  242.     e.currentTarget.startDrag();
  243.    
  244. }
  245.  
  246. private function stopDraging(e:MouseEvent):void
  247. {
  248.    e.currentTarget.stopDrag();
  249.  
  250. }
  251.        
  252.  
  253.  
wierusna

 
Автор темы
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.

Re: Если цель == spr, делать что то. Помогите!

Сообщение Alazaur » 03 дек 2012, 19:08

То есть вы создаете спрайт. На который ссылается глобальная переменная spr. Добавляете его этот пустой спрайт на сцену.
Потом по клике на кнопке у вас создаются новые спрайты вы создаете новые локальные переменные тоже с именем spr.
И потом в select хотите сверить не нажали ли мышью на один из этих созданных спрайтов, сравнивая глобальную переменную spr с event.target.
Если я все правильно понимаю то так ничего не выйдет. Как один из вариантов массив в который добавлять создаваемые спрайты. А потом проверять каждый элемент массива на соответствие e.target.
Как еще оин вариант вешать слушатель не на stage а на сами эти спрайты.
Или дать им индивидуальный класс и проверять на соответствие типа e.target.
Или помещатьэти спрайты в контейнер и проверять e.target на родителя.
Выбор за вами вобщем)))
Alazaur
Разработчик
Разработчик
 
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25
Благодарил (а): 24 раз.
Поблагодарили: 121 раз.

Re: Если цель == spr, делать что то. Помогите!

Сообщение wierusna » 03 дек 2012, 19:18

Alazaur писал(а):Или помещать эти спрайты в контейнер и проверять e.target на родителя.
Выбор за вами вобщем)))

Это наверное самый легкий вариант будет, так? Я новичок говнокодер... :)
wierusna

 
Автор темы
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.

Re: Если цель == spr, делать что то. Помогите!

Сообщение wierusna » 03 дек 2012, 19:20

Alazaur писал(а):Или дать им индивидуальный класс и проверять на соответствие типа e.target.


Это как?
Примерно так что ли?

  1. }else if event.target is Индивидуальный класс ) {
  2.         currTool.target = event.currentTarget as Sprite;
  3.         toolInit();


Только вот как присвоить им этот класс я не знаю...
wierusna

 
Автор темы
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.

Re: Если цель == spr, делать что то. Помогите!

Сообщение Alazaur » 03 дек 2012, 19:21

Самый легкий вариант, при создании спрайта вешать на него слушатель, а со stage убрать. Тогда и проверять ничего не придется.
Alazaur
Разработчик
Разработчик
 
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25
Благодарил (а): 24 раз.
Поблагодарили: 121 раз.

Re: Если цель == spr, делать что то. Помогите!

Сообщение Alazaur » 03 дек 2012, 19:24

wierusna писал(а):
Alazaur писал(а):Или дать им индивидуальный класс и проверять на соответствие типа e.target.


Это как?
Примерно так что ли?

  1. }else if event.target is Индивидуальный класс ) {
  2.         currTool.target = event.currentTarget as Sprite;
  3.         toolInit();


Только вот как присвоить им этот класс я не знаю...


Примерно так:

Но тут вам оно не надо)))
Alazaur
Разработчик
Разработчик
 
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25
Благодарил (а): 24 раз.
Поблагодарили: 121 раз.

След.

Вернуться в Программирование на Flash



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0