กระทู้เมื่อเร็วๆ นี้

หน้า: 1 ... 8 9 [10]
91
ขออณุญาติขุดครับ
92
Adobe CS6 / Re: ช่วยแก้หน่อยครับ error#1009
« กระทู้ล่าสุด โดย thenesta เมื่อ 04 ม.ค. 16, 10:00:52 »
 :12: :12: :12:
93
Adobe CS6 / Re: ช่วยแก้หน่อยครับ error#1009
« กระทู้ล่าสุด โดย thora เมื่อ 04 ม.ค. 16, 02:22:20 »
มันหา object ที่อ้างถึงในสคริบส์ไม่เจอ ให้แค่สคริบส์มาหากสิ่งที่หาไม่เจอมันเป็นวัตถุบน timeline มันก็บอกไม่ได้ครับ ว่าตัวไหน ที่สคริบส์ไหน วิธีหาและเก้ไม่ยากเลย แต่ต้องมีไฟล์นั้นๆ พร้อมรันด้วย
วิธีหาจุดที่มีปัญหา
-บรรทัดหรือเงื่อนไขหรือฟังก์ชันที่สงสัย ให้ trace("--------Check-------"); ออกมาดูว่ามันมีปัญหาก่อนหรือหลังจุด ตำแหน่ง หรือฟังก์ชันที่ทดสอบ
-เมื่อรู้ว่ามีปัญหาบรรทัดไหนก็สังเกตว่ามันเกิดอะไรขึ้น ในที่นี้คือ TypeError: Error #1009: Cannot access a property or method of a null object reference. แสดงว่ามันหาตัวแปรหรือวัตถุบางสิ่งในบรรทัดนั้นไม่เจอ
-เช็คตัวแปรบรรทัดที่มีหัญหาโดยการ trace("item = ", item); แล้วดูว่า item นั้นมันมีอยู่จริงและอ่านค่าได้จริงหรือไม่
ตัวอย่าง
สมมติว่ามีโคด
โค๊ด: [Select]
var num1:int = 0;
var num2:int = 0;
trace("--------Check1-------");
mc.x = num1;
trace("--------Check2-------");
mc1.x = mc.x + num2;
trace("--------Check3-------");
output :
--------Check1-------
--------Check2-------
TypeError: Error #1009: Cannot access a property or method of a null object reference.
ก็ให้ลองเขียนเช็คอีกรอบเป็น
โค๊ด: [Select]
var num1:int = 0;
var num2:int = 0;
trace("mc = ", mc);
trace("mc1 = ", mc1);
mc.x = num1;
mc1.x = mc.x + num2;
ถ้า output เป็น
mc =  (อะไรก็ได้ตามที่เราตั้งไว
mc1 =  (ว่างเปล่า,null,undefind)
ก็แสดงว่า mc1 หาไม่เจอครับ ให้เข็ค mc1 โดยพลัน
94
Adobe CS6 / ช่วยแก้หน่อยครับ error#1009
« กระทู้ล่าสุด โดย bestba11 เมื่อ 03 ม.ค. 16, 07:34:49 »
TypeError: Error #1009: Cannot access a property or method of a null object reference.
   at slide_fla::MainTimeline/frame1()
   at flash.display::Sprite/constructChildren()
   at flash.display::Sprite()
   at flash.display::MovieClip()
   at slide_fla::mc_1()
   at flash.display::MovieClip/gotoAndPlay()
   at slide_fla::MainTimeline/fl_ClickToGoToBackmap1_1()

แก้ยังไงครับ

นี่ตัวโค๊ดครับ

stop();

stage.displayState = StageDisplayState.FULL_SCREEN;
stage.scaleMode = StageScaleMode.EXACT_FIT;

import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;

import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
import flash.utils.getTimer;
import fl.motion.easing.Sine;
import fl.transitions.Tween;
import fl.transitions.TweenEvent;

// ใช้ stage เป็นตัวรับเมาส์อีเว้นท์ เพราะมันสามารถรับ MOUSE_UP จากนอกพื้นที่แฟลชได้
stage.addEventListener(MouseEvent.MOUSE_DOWN, stageMouseButtonHander);
stage.addEventListener(MouseEvent.MOUSE_UP, stageMouseButtonHander);

var scrollTarget:Sprite = mcm1; // mc ที่จะสไลด์ ในที่นี้กำหนดให้เป็นไทม์ไลน์
var startX:Number;
var clickTime:int;
var rect:Rectangle = scrollTarget.scrollRect = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
var xTween:Tween = new Tween(rect, "x", Sine.easeOut, 0.0, 0.0, 0.0, true); // เราไม่ tween scrollTarget โดยตรง แต่จะ tween scrollRect.x ของมันแทน แต่เนื่องจากเราไม่สามารถกำหนดค่า x ของ scrollTarget.scrollRect ได้โดยตรง เราจึงต้อง tween rect.x ก่อน แล้วจึงนำ rect ไปกำหนดให้กับ scrollTarget.scrollRect อีกที
xTween.stop();
xTween.addEventListener(TweenEvent.MOTION_CHANGE, tweenEventHandler);


function tweenEventHandler(event:TweenEvent):void
{
   scrollTarget.scrollRect = rect; // อัพเดท scrollRect
}

function stageMouseButtonHander(event:MouseEvent):void
{
   if (event.type === MouseEvent.MOUSE_DOWN)
   {
      startX = stage.mouseX; // เก็บค่า x เริ่มต้นที่คลิกไว้
      clickTime = getTimer(); // จำเวลาที่คลิกไว้

   }
   else
   {
      if (getTimer() - clickTime > 2500) // ถ้าเวลาที่คลิกกับเวลาที่ปล่อยปุ่มคลิกนั้นเกิน 250 ms ถือว่าผู้ใช้ไม่ได้สไลด์
         return;
      var delta:int = -(stage.mouseX - startX);// หาระยะห่างระหว่างตำแหน่งที่คลิก กับตำแหน่งที่ปล่อย
      if (Math.abs(delta) < 10) // ถ้ามันน้อยกว่า 10 ก็ถือว่าไม่สไลด์
         return;
      if (xTween.isPlaying)
         xTween.stop();
      xTween.begin = rect.x;
      xTween.finish = rect.x + delta;
      var total = xTween.position;
      xTween.duration = 0.1 + Math.abs(delta) / stage.stageWidth * 0.9; // กำหนดเวลาของ Tween จากระยะห่างของการสไลด์

      
      if (xTween.duration > 1.0) { // ถ้าเวลาเกิน 1 วิ ก็ทำให้มันเป็น 1 วิ
         xTween.duration = 1.0; }
         
      if (xTween.finish  < 0){
         xTween.begin = xTween.finish ;
         xTween.finish = 0;
         xTween.start();

      }   
      
      else if (xTween.finish  > 1100){
         xTween.begin = xTween.finish ;
         xTween.finish = 1100;
         xTween.start();
      }   
      else {   
         xTween.start();
         /* xTween.addEventListener(TweenEvent.MOTION_CHANGE, onChange2);
         function onChange2(e:TweenEvent):void {
         trace(rect.x); } */
      }         
   }   
}



ขอบคุณมากครับ
95
Action Script 3 / Re: HitTestObject ใช้กับ AS3ปกติ แต่ใช้กับ Air ผิดพลาด!?
« กระทู้ล่าสุด โดย thora เมื่อ 03 ม.ค. 16, 05:29:59 »
 :18: หลื่อเกินไปไหมท่าน
96
บอร์ด php หรือ  :56:
97
xxxxxxxx.dataFormat = URLLoaderDataFormat.VARIABLES;

หวังว่าช่วยได้
98
Action Script 3 / สอบถามเกี่ยวคับโค้ดลากวางแล้วได้คะแนน
« กระทู้ล่าสุด โดย torloverock เมื่อ 02 ม.ค. 16, 11:13:00 »
คือผมกำลังทำสื่อการเรียนการสอนครับ แต่ผมเขียนโค้ดไม่ค่อยเก่ง
เรื่องมีอยู่ว่า ผมจะทำมินิเกม คือให้เอาแอปเปิ้ลไปวางในสี่เหลี่ยมสีเขียว แล้วคะแนนกล่องเขียว+1 ถ้าเอาออกคะแนนจะ-1
แล้วตรงกลางจะ เป็นตัวบอกว่า >,<หรือ= เป็นสื่อการสอนเรื่องสมการครับ
ผมทำลากแอปเปิ้ลได้แล้วครับ แต่ต่อจากนี้ผมไม่รู้ว่าผมต้องทำยังไง
รบกวนผู้รู้ด้วยครับ

ส่วนโค้ดที่ผมทำ
โค๊ด: [Select]
import flash.events.Event;
stop();
ball_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag);
ball_mc.addEventListener(MouseEvent.MOUSE_UP, drop);
ball_mc.buttonMode=true;
//ball_mc.นี่ผมทำไป12อันครับ ย่อเพื่อความสะดวก
ball_mc12.addEventListener(MouseEvent.MOUSE_DOWN, drag);
ball_mc12.addEventListener(MouseEvent.MOUSE_UP, drop);
ball_mc12.buttonMode=true;
var score:uint;
score = 0;
function checkHittest(event:Event)
{
if (ball_mc.hitTestObject(box_mc))
score += 1
scorecounter.text = " SCORE:"+score.toString()
}
{
else
score += 1
scorecounter.text = " SCORE:"+score.toString()
}
รบกวนผู้รู้มานำทางผมทีครับ
99
Action Script 3 / Re: HitTestObject ใช้กับ AS3ปกติ แต่ใช้กับ Air ผิดพลาด!?
« กระทู้ล่าสุด โดย infinity_zero เมื่อ 02 ม.ค. 16, 08:32:43 »
ขอคาระวะ อย่างสุดซึ้ง
100
Action Script 3 / Re: HitTestObject ใช้กับ AS3ปกติ แต่ใช้กับ Air ผิดพลาด!?
« กระทู้ล่าสุด โดย Mindth :) เมื่อ 02 ม.ค. 16, 08:04:02 »
ออเข้าใจละ !!เพิ่งเข้าใจ งงกับหัวข้อเอง

จากที่อ่านๆโค้ดดูมันก็ดูปกตินะครับ แต่ผลลัพธ์ที่ได้มันต่างกันใช่ไหม........ ระหว่างเทสกับ flash player และ air

คำตอบนั้นก็คือ flash กับ air ทำงานไม่เหมือนกันครับ flash ... ทำงานบนเว็บ และ air ทำงานบนอุปกรณ์ต่างๆ

ปกติแฟลชไม่ค่อยจะเซ้นสถีบกับตัวโปรแกรมเท่าไหล่ครับ เพราะว่าอะไรที่วางไว้ใน timeline ก็ถือว่า instance นั้นถูก addChild แล้ว

แต่ Air ค่อนข้างจะเซ้นสถีบพอสมควรครับ อะไรที่ไม่อยู่ในหน้าจอจริงๆก็อย่าหวังเลยว่าจะใช้งานได้

ฉนั้นจากโค้ดที่เขียนมาข้างต้นจะสังเกตเห็นว่า

โค๊ด: [Select]
var circle:Shape = new Shape();

/*
...
...
*/

if(circle.hitTestObject(this.all.tool.yel1)){
all.tool.yel1.num+=1;
}
if(circle.hitTestObject(this.all.tool.yel2)){
all.tool.yel2.num+=1;
}
container.addChild(circle)


!!circle มันถูก addChild หลังจากที่ hitTestObject แล้ว (!!! โดนเช็ค hitTest ตั้งแต่ยังไม่ได้สร้าง object ลงหน้าจอ)

ฉนั้นแล้ว flash มันเลยถือว่ารั่วมากครับ T_T


หน้า: 1 ... 8 9 [10]