На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: PIL
  
> изменить содержимое вложенного спрайта , AS3 FlashDevelop
    имеется
    в init функции
    ExpandedWrap disabled
      for (var i:int = 1; i < 5; i++) {
      s = new Sprite();
      s.addChild(new this['bim' + i] as Bitmap);
      s.x = bgHolder.numChildren?bgHolder.width + 20:0;
      bgHolder.addChild(s);
      s.name = 'picture_' + i;
      }
      s.addEventListener(MouseEvent.MOUSE_MOVE, knmuve);

    нужно при наведении на конкретный дочерний спрайт (s) подменить картинку
    ну и собственно функция
    ExpandedWrap disabled
      private function knmuve(e:MouseEvent = null):void {
       
      s.parent.removeChild(s);
      s = null;
      s.addChild(new kn2() as Bitmap);
      }

    но не работает
      Цитата astrolit @
      s = null;
        и ...
        Добавлено
        Цитата K313 @

        взято было из примера и работало без вложенного спрайта!
        Я и без этой строчки не получал ни какого результата?!


        есть идеи?
        Сообщение отредактировано: astrolit -
          Ты бы лучше слушатель эвента на родителя повесил, было бы меньше геморроя. Если не хочешь или не можешь, добавлять надо к "s.parent" и до того, как выполнять s.parent.removeChild(s) иначе до parent'а не достанешь. Типа такого:
          ExpandedWrap disabled
            private function knmuve(e:MouseEvent = null):void {
                var k:Bitmap=new kn2() as Bitmap;
                s.parent.addChild(k);
                s.parent.removeChild(s);
                s = k;
            }
            ругается
            ExpandedWrap disabled
                  private function knmuve(e:MouseEvent):void {
                          
                         var k:Bitmap=new kn2() as Bitmap;
                  s.parent.addChild(k);
                  s.parent.removeChild(s);
                  s = k; //на переменую k
                          
                      }

            MainMany.as(158): col: 9 Error: Implicit coercion of a value of type flash.display:Bitmap to an unrelated type flash.display:Sprite.
            s = k;
            отправлю более полный пример кода моего
            ExpandedWrap disabled
              public class MainMany extends Sprite {
                      [Embed(source = "../../lib/1b.png")] private var kn2:Class;
                      [Embed(source = "../../lib/1.png")] private var bim1:Class;
                      [Embed(source = "../../lib/2.png")] private var bim2:Class;
                      [Embed(source = "../../lib/3.png")] private var bim3:Class;
                      [Embed(source = "../../lib/4.png")] private var bim4:Class;
                      [Embed(source = "../../lib/5.png")] private var bim5:Class;
                      private var water:Bitmap;//Битмап с фоткой кругов. Пользуем для "подчеркивания" объема
                      private var map:BitmapData;//Сюда круги фотографируем. Карта искажений.
                      private var waterHolder:Sprite;//Холдер для клипов кругов.
                      
                      private var rainRegime:Boolean;//"Выключатель" режима дождя или следа мышки.
                      private var dmf:DisplacementMapFilter;//Фильтр искажений
                      private var bgHolder:Sprite;//Общий контейнер картинок
                      private var s:Sprite;//контейнер картинкi
                      private var tf:TextField;
               
                      
                      
                      public function MainMany() {
                          stage?init():addEventListener(Event.ADDED_TO_STAGE, init);
                          
                      }
                      
                      /**** PUBLIC SECTION ****/
                      
                      /** ACCESSORS **/
                      
                      /**** PRIVATE SECTION ****/
                      
                      /**
                       * Создаем "каплю" на водной поверхности из библиотечного клипа.
                       * @param   dropX X координата
                       * @param   dropY Y координата
                       * Если параметр = 0, соответствующая координата будет случайной в пределах сцены.
                       * Каждая капля, по завершении анимации "расплыва", диспатчит событие 'dropComplete'
                       */
                      private function createDrop(dropX:Number=0,dropY:Number=0):void {
                          var w:vawe1 = new vawe1();
                          w.x = dropX?dropX:20 + (stage.stageWidth) * Math.random();
                          w.y = dropY?dropY:20 + (stage.stageHeight - 40) * Math.random();
                          waterHolder.addChild(w);
                          w.gotoAndPlay(int(1 + Math.random() * (w.totalFrames-10)*int(rainRegime)));
                      }
                      
                  
                      /**** LISTENERS SECTION ****/
                      
                      /**
                       * Инсталяция.
                       * Установим в цикле кучку картинок, каждую в свой контейнер(для идентификации кликов).
                       * Контейнеры сложим в еще один контейнер и ему уже назначим обработку клика.
                       * Оперируя, в обработчике, целевыми объектами, сможем выбрать с чем работать в дальнейшем.
                       * Режим наложения выбран такой, чтоб чуть выделить водные круги на картинке.
                       * Назначим контейнер для анимации капель(waterHolder), переключатель режима(rainRegime) и фильтр(dmf).
                       * Запустим сторожей событий:
                           * 'dropComplete' - капля отработала анимацию
                           * ENTER_FRAME - анимация карты искажений
                           * CLICK - смена режимов
                       * Запускаемся.
                       * @param   e - Event.ADDED_TO_STAGE
                       */
                      
                      
                      private function init(e:Event = null):void {
                          removeEventListener(Event.ADDED_TO_STAGE, init);
                          addEventListener(Event.REMOVED_FROM_STAGE, destroyer);
                          // entry point
                          addChild(bgHolder = new Sprite());
                          //Вставка и расстановка картинок
                          s = new Sprite;
                          
                          
                          
                          
                          
                          var x:int = 0;
                          for (var i:int = 1; i < 6; i++) {
                              s = new Sprite();
                              
                              
                              
                              
                              s.addChild(new this['bim' + i] as Bitmap);
                              
                              s.x = bgHolder.numChildren?bgHolder.width + 10:0;
                              bgHolder.addChild(s);
                              s.name = 'picture_' + i;
                              
                              
                              
                              
                          }
                          //Центрируем контейнер с картинками
                          bgHolder.x = (stage.stageWidth - bgHolder.width) / 2;
                          bgHolder.y = (stage.stageHeight - bgHolder.height) / 2;
                          
                          addChild(water = new Bitmap(map = new BitmapData(640, 40, false, 0x808080)));
                          water.blendMode = BlendMode.OVERLAY;
                          water.alpha = .5;
                          water.x = bgHolder.x, water.y = bgHolder.y;
                          waterHolder = new Sprite();
                          rainRegime = true;
                          dmf = new DisplacementMapFilter(map, new Point(), 1, 1, 15, 15, 'color');
                          bgHolder.filters = [dmf];
                          waterHolder.addEventListener('dropComplete', completeDrop);
                          this.addEventListener(Event.ENTER_FRAME, runWaves);
                          //bgHolder.addEventListener(MouseEvent.CLICK, changeRegime);
                          bgHolder.addEventListener(MouseEvent.CLICK, generateWave);
                          //bgHolder.addEventListener(MouseEvent.MOUSE_MOVE, knmuve);
                          s.addEventListener(MouseEvent.MOUSE_OVER, knmuve);
                      
                          
                          rainRegime = false;
                          //changeRegime();
                          
                          
                          tf = new TextField();  
                          //tf.defaultTextFormat = new TextFormat("Arial", 20, 16777062, true);
                          tf.autoSize = "center";
                          tf.x = stage.stageWidth / 2;
                          tf.y = bgHolder.y + bgHolder.height;        
                          tf.text = "Выберите галерею";
                          
                      }
                      private function knmuve(e:MouseEvent):void {
                          
                         var k:Bitmap=new kn2() as Bitmap;
                  s.parent.addChild(k);
                  s.parent.removeChild(s);
                  s = k;
                          
                      }
              Хм. Из твоего кода следует, что S это должен быть спрайт с какими-то битмапами, а ты его зачем-то хочешь весь спрятать при выполнении knmuve, и хочешь добавить некий битмап kn2. Вопрос первый - а куда ты хочешь добавить сей битмап, с какими координатами, и что планируешь сделать после того, как он окажется не нужным? И второй - сколько их тебе надо?
                каждый s спрайт содержит битмап с картинками кнопок их 5 и они смещаются по горизонтали на 20 друг от друга получается меню, также добавляется имя каждому спрайту picture_1 и т.д.
                суть, есть активная нарисованная кнопка и при перемещении над спрайтом хотелось бы подменять ему битмап с координатами старого, и соответственно уходя с него возвращать первый битмап
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0305 ]   [ 15 queries used ]   [ Generated: 27.04.24, 20:57 GMT ]