Ошибка № 1069: свойство не найдено и значение по умолчанию отсутствует - PullRequest
0 голосов
/ 17 мая 2011

У меня проблема с проектом, над которым я работаю в Flash Builder. Ниже приведен пример моего стека и кода. Может кто-нибудь сказать мне, что я делаю не так?

Спасибо за ваше время.

- Стек -

ReferenceError: Ошибка # 1069: свойство page4 не найдено в WOAPPv2 и значение по умолчанию отсутствует. в WOAPPv2 / dragDropHandler () [/ Users / martinw / Documents / Adobe Flash Builder 4 / WOAPPv2 / src / WOAPPv2.mxml: 165] на flash.events::EventDispatcher/dispatchEventFunction () на flash.events::EventDispatcher/dispatchEvent () в mx.core :: UIComponent / dispatchEvent () [E: \ dev \ 4.x \ frameworks \ projects \ framework \ src \ mx \ core \ UIComponent.as: 12528] на mx.managers.dragClasses :: DragProxy / _dispatchDragEvent () [E: \ dev \ 4.x \ frameworks \ projects \ framework \ src \ mx \ Manager \ dragClasses \ DragProxy.as: 374] в mx.managers.dragClasses :: DragProxy / mouseUpHandler () [E: \ dev \ 4.x \ frameworks \ projects \ framework \ src \ mx \ Manager \ dragClasses \ DragProxy.as: 599]

- Пример кода - Это то, что работает

import mx.core.DragSource;
import mx.events.DragEvent;
import mx.managers.DragManager;

        private function initiateDrag(event:MouseEvent,value:String):void{

            var dragInitiator:Image= event.currentTarget as Image;   

            var dragSource:DragSource = new DragSource();
            dragSource.addData(value, 'value');
            DragManager.doDrag(dragInitiator, dragSource, event);
        } 

        private function dragEnterHandler(event:DragEvent):void {
            var dropTarget:VBox =event.currentTarget as VBox;
            if (event.dragSource.hasFormat('value')) {
                DragManager.acceptDragDrop(dropTarget);
            }
        }

private function dragDropHandler(event:DragEvent):void {
            var pageName:String = event.currentTarget.name as String;
            var value:String = event.dragSource.dataForFormat('value') as String;
            this[pageName].source = "assets/big/"+value; 


        }

<s>

<s:HGroup id="hGr"
              requestedColumnCount="2"
              variableColumnWidth="false"
              columnWidth="475"
              height="450"
              gap="100"
              clipAndEnableScrolling="true" paddingLeft="10" paddingRight="10">


        <mx:VBox name="page1"
                 backgroundColor="#EFEFF0"
                 verticalScrollPolicy="off" 
                 horizontalScrollPolicy="off"
                 horizontalAlign="center" verticalAlign="middle"
                 dragEnter="dragEnterHandler(event)"
                 dragDrop="dragDropHandler(event)"
                 width="475"
                 x="0">


            <mx:Image id="page1" showBusyCursor="true" width="713" height="692" scaleContent="true" maintainAspectRatio="true" minWidth="713" minHeight="692" scaleX="1" scaleY="1" horizontalAlign="center" verticalAlign="top"/>
        </mx:VBox>


    </s:HGroup>

Это ломается, если я делаю это таким образом, создавая контейнеры и образы во время выполнения

<script>


   private function initVars():void {
            createSpreads();
        }


        public function createSpreads():void {

            var s:VBox = new VBox();
            s.name ="page4";

            s.setStyle("backgroundColor","#fe0000"); 
            s.verticalScrollPolicy="off";
            s.horizontalScrollPolicy="off";
            s.setStyle("horizontalAlign","center");
            s.setStyle("verticalAlign","middle");
            s.addEventListener(DragEvent.DRAG_ENTER, dragEnterHandler);
            s.addEventListener(DragEvent.DRAG_DROP, dragDropHandler);
            s.width= 475;
            s.setStyle("x","0");
            hGr.addElement(s);

            hGrCol4.text = "Vboxname: "+s.name+"VboxID: "+s.id;

            var page3:Image = new Image();
            page3.id ="page4";

            page3.showBusyCursor = true;
            page3.width = 713;
            page3.height = 692
            page3.scaleContent = true;
            page3.maintainAspectRatio = true;
            page3.minWidth = 713;
            page3.minHeight = 692;
            page3.scaleX = 1;
            page3.scaleY = 1;
            page3.source = "assets/big/IMG_7112.jpg";
            page3.setStyle("backgroundColor","#ffffff");
            page3.setStyle("horizontalAlign","center");
            page3.setStyle("verticalAlign","top");
            s.addElement(page3);

            hGrCol3.text = "Imagename: "+page3.name+"ImageID: "+page3.id;
        }


import mx.core.DragSource;
import mx.events.DragEvent;
import mx.managers.DragManager;

        private function initiateDrag(event:MouseEvent,value:String):void{

            var dragInitiator:Image= event.currentTarget as Image;   

            var dragSource:DragSource = new DragSource();
            dragSource.addData(value, 'value');
            DragManager.doDrag(dragInitiator, dragSource, event);
        } 

        private function dragEnterHandler(event:DragEvent):void {
            var dropTarget:VBox =event.currentTarget as VBox;
            if (event.dragSource.hasFormat('value')) {
                DragManager.acceptDragDrop(dropTarget);
            }
        }

private function dragDropHandler(event:DragEvent):void {
            var pageName:String = event.currentTarget.name as String;
            var value:String = event.dragSource.dataForFormat('value') as String;
            this[pageName].source = "assets/big/"+value; 

        }


</script>

<s>

<s:HGroup id="hGr"
              requestedColumnCount="2"
              variableColumnWidth="false"
              columnWidth="475"
              height="450"
              gap="100"
              clipAndEnableScrolling="true" paddingLeft="10" paddingRight="10">

    </s:HGroup>

</s>

При отсутствии контейнеров в HGroup возвращается «свойство page4, не найденное в WOAPPv2, и значение по умолчанию отсутствует» - мой конечный результат должен быть следующим:

page4.source = "assets / big / imagename.jpg";

Я в тупике. Я переосмысливаю его и могу просто создать vbox, а затем установить триггер, чтобы создать изображение и заполнить тот же DragDropHandler. Мысли?

Ниже приведено решение, опять же, спасибо alxx. Теперь мне нужно начать делиться своими знаниями с другими здесь.

public function dragDropHandler(event:DragEvent):void {

        // Retrieve the Image Name from Drop
        var value:String = event.dragSource.dataForFormat('value') as String;

                    //
        event.currentTarget.getChildAt(0).source = "assets/big/"+value;

        }

1 Ответ

0 голосов
/ 18 мая 2011

... продолжение здесь для правильного форматирования
Строка проблемы:

var value:String = event.dragSource.dataForFormat('value') as String;
this[pageName].source = "assets/big/"+value;

Моя цель состояла в том, чтобы добавить дочерний файл vbox и изображения, который разделил имя с идентификатором, и использовать событиезахватить имя текущей цели, являющееся элементом управления изображением

Не уверен, правильно ли я понимаю.Если event.currentTarget - это изображение, которое вам нужно, вы можете просто привести его к изображению.Или вам нужно где-то найти другое изображение (сгенерированное в Repeater)?

update

"Я пытаюсь использовать имя VBox какстрока, используемая для точечной нотации для ссылки на изображение внутри нее "

Имена объектов DisplayObject являются только метками, а не ссылками.Если вы думаете, что можете пройтись по иерархии объектов с именами, как в JS DOM, то нет, это делается другим способом во Flash.Вы можете получить ссылку на VBox с помощью event.currentTarget - более полезно, чем его имя (String).Вы можете получить изображение внутри него с помощью getChildAt. * ​​1022 *

...