Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Опять про ошибку #1009 (http://www.flasher.ru/forum/showthread.php?t=145032)

helgboy 28.09.2010 00:03

Опять про ошибку #1009
 
Вообщем мной давно была написана флешка на AS3, на ней размещены некоторые кнопки. Сейчас возникла необходимость ее подредактировать.
Парадокс в том что все работает..., но как только я удаляю кнопу и вместо нее рисую другую, с тем же instance name, сразу все перестает работать и пишет TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
Что за ерунда? Помогите! :wacko:

Psycho Tiger 28.09.2010 00:09

Цитата:

Парадокс в том что все работает...
:D

Ну код надо смотреть. Скорее всего использовался getChildByName, может быть getChildAt с последующим приведением к неправильному типу и т.д.

helgboy 28.09.2010 00:42

Да нет же, в коде все отлично, все работает, на сцене используються 4 кнопки , если удалить любую и вместо нее нарисовать новую, или импортировать в library и потом отконвертировать в button то все сразу ошибку выбивает при отслеживании действий с этой кнопокй. вот в этом месте

Код AS3:

leftbut.addEventListener(MouseEvent.MOUSE_DOWN, mouseleft);
                rightbut.addEventListener(MouseEvent.MOUSE_DOWN, mouseright);
                rightbutx10.addEventListener(MouseEvent.MOUSE_DOWN, mouserightx10);
                leftbutx10.addEventListener(MouseEvent.MOUSE_DOWN, mouseleftx10);
        }

Мной была удалена и нарисована кнопка rightbut.

zurkis 28.09.2010 01:46

показывай и исходник так же

helgboy 28.09.2010 02:24

Исходник слишком большой чтоб его полностью здесь вылаживать (речь идет о целом сайте на флеше)
вообще вот это в fla файле
Код AS3:

import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;
import flash.display.Loader;
import flash.net.*;
import flash.events.*;
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.*;
import flash.display.MovieClip;
import flash.geom.PerspectiveProjection;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Rectangle;
import flash.filters.BlurFilter;
/////////////////////////////////////////////////////////////////////
var img1:Sprite = new Sprite();
var img2:Sprite = new Sprite();
var img3:Sprite = new Sprite();
var img4:Sprite = new Sprite();
var img5:Sprite = new Sprite();
var pP:PerspectiveProjection = new PerspectiveProjection();
var pP1:PerspectiveProjection = new PerspectiveProjection();
var loader:Array =new Array();
var urlstring:Array = new Array();
var urlpage:Array = new Array();
var url:URLRequest = new URLRequest();
var p:Number=new Number  ;
var i:int;
var w:int=1;
var chislostranictxt:URLLoader = new URLLoader();
var urltxt:URLLoader = new URLLoader();
var msg:TextField = new TextField();
var integer:Number=0;
var chislostranic:Number=0;
var prl=0;
var prlstr:TextField = new TextField();
 
/////////////////////////////////////////////// загрузка текста и изображений/////
try {
        chislostranictxt.load(new URLRequest("file:///E:/flash/site/res/chislostranic.txt"));
        urltxt.load(new URLRequest("file:///E:/flash/site/res/weblink.txt"));
} catch (error:Error) {
        trace("Не могу загрузить текст");
}
preloadmessage();
configureListeners(chislostranictxt);
urltxtListeners(urltxt);
 
global function progressHandler(event:ProgressEvent):void {
        trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
}
global function configureListeners(dispatcher:IEventDispatcher):void {
        dispatcher.addEventListener(Event.COMPLETE, completeHandler);
        dispatcher.addEventListener(ProgressEvent.PROGRESS,progressHandler);
}
global function urltxtListeners(dispatcher:IEventDispatcher):void {
        dispatcher.addEventListener(Event.COMPLETE, urltxtcomplete);
        dispatcher.addEventListener(ProgressEvent.PROGRESS,progressHandler);
}
global function urltxtcomplete(event:Event):void {
        ....
}
 
global function completeHandler(event:Event):void {
        var chislostranictxt:URLLoader=URLLoader(event.target);
        trace("completeHandler2323: " + chislostranictxt.data);
        var integer:uint=uint(Number(chislostranictxt.data));
        chislostranic=integer;
        for (i=1; i<=chislostranic; i++) {
                url=new URLRequest("file:///E:/flash/site/res/page-"+i+".jpeg");
                loader[i]=new Loader  ;
                loader[i].load(url);
                loader[i].contentLoaderInfo.addEventListener(Event.COMPLETE, preload);
        }
        stranica1();
}
global function preload(event:Event):void {
        prl=prl+1;
        prlstr.x=400;
        prlstr.y=750;
        prlstr.width=150;
        var format:TextFormat = new TextFormat();
        format.font="Courier New";
        format.color=0x0000FF;
        format.size=12;       
        prlstr.defaultTextFormat = format;
        prlstr.text="Загружено страниц: "+prl;
        addChild(prlstr);
        if (prl==chislostranic)
        removeChild(prlstr);
        if (prl==10)
        removeChild(msg);
}
global function preloadmessage():void {
        var format1:TextFormat = new TextFormat();
        format1.font="Courier New";
        format1.color=0x0000FF;
        format1.size=20;       
        msg.defaultTextFormat = format1;
        msg.text="Пожалуйста, дождитесь окончания загрузки ролика...";
        msg.x=250;
        msg.y=200;
        msg.width=700;       
        addChild(msg);
        }
/////////////////////////////////////////////// загрузка текста и изображений/////
 
////////////////////////////////////////////// формирование страниц//////////////
 
global function stranica1():void {
        .....
}
global function stranica2():void {
        ....
}
global function stranica3():void {
        .....
}
global function stranica4():void {
        ......
}
global function stranica5():void {
        .....

на и вот кусочек AS файла.
Код AS3:

package main{
        import flash.display.*;
        import flash.events.*;
        import flash.display.Sprite;
        import flash.display.Graphics;
        import flash.display.MovieClip;
        import flash.ui.*;// для работы с клавой
        import fl.transitions.Tween;
        import fl.transitions.TweenEvent;
        import flash.net.URLRequest;
        import flash.display.Loader;
        import flash.net.*;
        import flash.text.TextField;
        import flash.geom.Point;
 
        dynamic public class Cod extends MovieClip {;
        public function Cod():void {
                stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboard);
                addEventListener(Event.ENTER_FRAME, reaction, false,0,true);
                leftbut.addEventListener(MouseEvent.MOUSE_DOWN, mouseleft);
                rightbut.addEventListener(MouseEvent.MOUSE_DOWN, mouseright);
                rightbutx10.addEventListener(MouseEvent.MOUSE_DOWN, mouserightx10);
                leftbutx10.addEventListener(MouseEvent.MOUSE_DOWN, mouseleftx10);
        }
        ///////////////////////////////////////////////////////////////////////////////////////////////////////
        var r=181;
        var j=1;
        var page=1;
        var k=0;
 
        //////////////////////////////////////////////// обработчик мыши/////////
        function mouseleft(e:MouseEvent):void {
                leftlist();
        }
        function mouseright(e:MouseEvent):void {
                rightlist();
        }
        function mouserightx10(e:MouseEvent):void {
                if (page==1) {
                        j=j-2;
                }
                if (page<=chislostranic-11) {
                        page=page+7;
                        j=j+7;
                }
                rightlist();
        }
        function mouseleftx10(e:MouseEvent):void {
                if (page>=13) {
                        page=page-9;
                        j=j-9;
                }
                leftlist();
        }


КорДум 28.09.2010 08:41

Вот смотрю я на тех, кто пишет в кадрах и (или) используя ручные добавления на сцены с инстансНеймами, и понимаю, что все-таки, ребят, переходите полностью на классы и на добавление всего контента динамически. Вот правда - никаких проблем таких не будет.

Psycho Tiger 28.09.2010 11:37

Из кода непонятно...
Может, у Вас внутри кнопки тоже были прописаны actions?
Попробуйте удалять не кнопку сразу, а постепенно, удаляя по элементу внутри её и смотрите когда выползет ошибка. На крайний случай удалите всё из кнопки и нарисуйте в той же кнопке.

helgboy 28.09.2010 12:18

напишите пожалуйста пример как можно объявить кнопку динамически и чтоб она была рисунком находящимся в library.
Пишу что то подобное var rightbut:Button = new Button();
выдает ошибку
1046: Type was not found or was not a compile-time constant: Button.

Добавлено через 14 минут
Блин полтергейст какой то, сейчас взял просто удалил кнопку со сцены, запустил все работает только удаленная кнопка естественно отсутствует, потом вставил ее назад из library, компилирую, ошибок никаких не выдает, но никакой реакции на нажатие любых из кнопок, хотя кнопки реагируют когда подводишь мышку к ним.
Насчет кода написанного на самих кнопках - его нет, просто на кадре OVER кнопка чуть смещена относительно кадра UP

Psycho Tiger 28.09.2010 12:55

SimpleButton
и
Код AS3:

import flash.display.SimpleButton


-De- 28.09.2010 13:14

Что тут думать - если 1009, то ищите "свойство или метод со ссылкой на объект "null"" и размышляете, почему оно нулл. По крайней мере находится оно элементарно, но по-моему никто из пишущих про 1009 этого не делает. Если 1046: Type was not found, то оно не знает такого типа, импортите этот тип.


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

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